Comb Sort Начальный ~16 мин чтения

Comb Sort

Урок 10 из 10 в курсе Алгоритмы. Старт.

Interactive

Comb Sort Visualizer

Введите числа и управляйте пошаговым выполнением алгоритма.

sorting

История шагов

Comb Sort

Comb Sort — вариант bubble sort с уменьшающимся gap, который ускоряет перенос удалённых элементов.

Основная идея

Сначала сравниваем элементы на большом расстоянии, затем постепенно уменьшаем gap до 1.

Пошаговый пример

Исходный массив:

[8, 4, 1, 56, 3, 44, 23, 15]
  1. Gap начинается с n и сжимается коэффициентом ~1.3
  2. На больших gap быстро устраняются "черепахи"
  3. При gap = 1 алгоритм работает как bubble sort

Псевдокод

gap = n
swapped = true
while gap > 1 or swapped:
    gap = max(1, floor(gap / 1.3))
    swapped = false
    for i from 0 to n - gap - 1:
        j = i + gap
        if arr[i] > arr[j]:
            swap(arr[i], arr[j])
            swapped = true

Оптимизация: За счёт gap часто работает быстрее классического bubble sort.

Сложность

Время В среднем быстрее O(n²), но в худшем близко к O(n²).
Память O(1), in-place.

Когда используется

  • Замена bubble sort
  • Обучение gap-подходу
  • Лёгкая реализация без рекурсии

Ключевые свойства

  • Обычно не стабильный
  • In-place
  • Простой и практичный