Приведи пример алгоритма сортировки, объясни его работу и эффективность.

«Приведи пример алгоритма сортировки, объясни его работу и эффективность.» — вопрос из категории Алгоритмы и структуры данных, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Сортировка пузырьком (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 элементов требуется порядка сравнений.
  • Пространственная сложность: O(1) (сортировка на месте, не требует дополнительной памяти).
  • Стабильность: Да, равные элементы не меняют свой относительный порядок.

Практический вывод: Bubble Sort — учебный алгоритм. В реальных Swift-проектах всегда используйте высокооптимизированные встроенные методы:

let sortedArray = array.sorted() // O(n log n) — Timsort/Hybrid
array.sort() // In-place сортировка