Gnome Sort
Gnome Sort — простой алгоритм, в котором "садовый гном" двигается по массиву и при необходимости делает шаг назад.
Основная идея
Идём вперёд, пока пары соседей упорядочены. Если нашли неупорядоченную пару — меняем местами и шагаем назад.
Пошаговый пример
Исходный массив:
[4, 2, 5, 1, 3]
- Сравниваем 4 и 2 → меняем и идём назад
- Дальше двигаемся вперёд, пока пары упорядочены
- Каждый "шаг назад" возвращает элемент на своё место
Псевдокод
i = 0
while i < n:
if i == 0 or arr[i - 1] <= arr[i]:
i += 1
else:
swap(arr[i - 1], arr[i])
i -= 1
Оптимизация: По сути упрощённая версия insertion sort без вложенных циклов.
Сложность
Время
O(n²) в среднем и худшем, O(n) на почти отсортированных данных.
Память
O(1), in-place.
Когда используется
- Обучение
- Очень маленькие массивы
- Демонстрация одношагового подхода
Ключевые свойства
- Стабильный
- In-place
- Очень простой код
Комментарии к уроку
Войдите, чтобы оставить комментарий.
Пока нет комментариев — будьте первым.