Ответ
Сортировка пузырьком (Bubble Sort) — простой для понимания, но неэффективный алгоритм сортировки.
Принцип работы: Алгоритм многократно проходит по массиву, сравнивая каждую пару соседних элементов. Если они расположены в неправильном порядке (например, по возрастанию), элементы меняются местами. За каждый проскок "всплывает" самый большой элемент из неотсортированной части.
Реализация на Swift:
func bubbleSort(_ array: [Int]) -> [Int] {
var sortedArray = array
let n = sortedArray.count
for i in 0..<n {
// После i итераций последние i элементов уже на своих местах
for j in 0..<(n - 1 - i) {
if sortedArray[j] > sortedArray[j + 1] {
// Меняем местами неотсортированные соседние элементы
sortedArray.swapAt(j, j + 1)
}
}
}
return sortedArray
}
// Пример
let unsorted = [64, 34, 25, 12, 22, 11, 90]
let sorted = bubbleSort(unsorted)
print(sorted) // [11, 12, 22, 25, 34, 64, 90]
Анализ эффективности:
- Временная сложность: O(n²) в худшем и среднем случае. Для массива из
nэлементов требуется порядкаn²сравнений. - Пространственная сложность: O(1) (сортировка на месте, не требует дополнительной памяти).
- Стабильность: Да, равные элементы не меняют свой относительный порядок.
Практический вывод: Bubble Sort — учебный алгоритм. В реальных Swift-проектах всегда используйте высокооптимизированные встроенные методы:
let sortedArray = array.sorted() // O(n log n) — Timsort/Hybrid
array.sort() // In-place сортировка