# 1. Introduction

Bubble Sort is a simple comparison-based sorting algorithm. The primary idea is to repeatedly step through the list, compare adjacent elements, and swap them if they are in the wrong order. This procedure is repeated for each item in the list until the list is sorted. Though not efficient for large lists, it's straightforward to understand and implement.

# 2. Implementation Steps

1. Loop through the array from the start to the second last element.

2. For each element, loop through the array again from the start to the reduced end.

3. Compare the current element with the next one.

4. If they're in the wrong order, swap them.

5. Repeat steps 1-4 until no more swaps are needed.

# 3. Implementation in Swift

``````func bubbleSort(_ array: inout [Int]) {
var swapped = true
while swapped {
swapped = false
for i in 0..<array.count - 1 {
// 3. Compare the current element with the next one
if array[i] > array[i + 1] {
// 4. Swap them if they're in the wrong order
array.swapAt(i, i + 1)
swapped = true
}
}
}
}
// Usage:
var numbers = [64, 34, 25, 12, 22, 11, 90]
bubbleSort(&numbers)
print(numbers)
``````

### Output:

```[11, 12, 22, 25, 34, 64, 90]
```

### Explanation:

1. The bubbleSort function takes an inout array of integers as its parameter, allowing us to modify the original array.

2. We use a swapped flag to determine if we made any swaps in a pass through the array. If no swaps are made during a full pass, it means the array is sorted.

3. Inside the nested loop, we compare adjacent elements of the array.

4. If the elements are out of order (i.e., the current element is greater than the next one), we swap them.

5. The outer loop continues until a pass through the array results in no swaps, indicating that the array is sorted.