Pancake Sort Средний

Pancake Sort

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

Содержание курса (13/14)

Interactive

Pancake Sort Visualizer

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

sorting

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

Pancake Sort

Pancake Sort — сортировка "блинов": единственная операция — переворот префикса массива.

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

На каждой итерации находим максимум в неотсортированной части, переворотом перемещаем его в начало, затем переворачиваем весь префикс, чтобы он встал в конец.

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

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

[3, 6, 1, 5, 2, 4]
  1. Находим максимум 6 и переворачиваем префикс до него → [6, 3, 1, 5, 2, 4]
  2. Переворачиваем весь массив → [4, 2, 5, 1, 3, 6]
  3. Повторяем для оставшейся части массива

Псевдокод

size = n
while size > 1:
    max_index = argmax(arr[0...size])
    if max_index != size - 1:
        if max_index != 0:
            flip(arr, max_index)
        flip(arr, size - 1)
    size -= 1

Оптимизация: Минимизация числа переворотов — отдельная исследовательская задача.

Сложность

Время O(n²) в количестве сравнений и переворотов.
Память O(1), in-place.

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

  • Задачи, где разрешена только операция переворота
  • Обучение нестандартным операциям
  • Спортивное программирование

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

  • Не стабильный
  • In-place
  • Использует только операцию flip

Комментарии к уроку

Войдите, чтобы оставить комментарий.

Пока нет комментариев — будьте первым.