Быстрая сортировка

Эффективность алгоритма УлПир

Пирамидальная сортировка хорошо работает с большими массивами, однако на маленьких примерах (N<20) выгода от ее применения может быть не слишком очевидна.

В среднем этот алгоритм имеет сложность, пропорциональную N*log N.

Существует еще один метод улучшенной сортировки, имеющий среднюю сложность порядка N*log N: так называемая Быстрая сортировка12). Этот алгоритм является усовершенствованием обменных сортировок. Его реализация наиболее удобна в рекурсивном варианте, поэтому мы вернемся к ее изучению после того, как познакомимся с рекурсивными процедурами и функциями (см. лекцию 9).

1) Более подробную информацию о различных алгоритмах упорядочения смотрите в книге Дональда Кнута " Искусство программирования ЭВМ", том 3: "Сортировка и поиск".
2) В названиях алгоритмов мы будем следовать Кнуту.
3) Одно - при сдвиге и еще одно - при проверке необходимости сдвига
4) Одно - при сдвиге и еще две - при переписывании вставляемого элемента.
5) Напомним, что log N означает log2 N
6) Если бы в строке {***} программы ПРВыб стоял знак строгого неравенства, то в качестве минимума была бы выбрана первая тройка. Однако очевидно, что выгоднее брать последний из совпадающих элементов: благодаря этому все они оказываются левее, чем тот превосходящий всех их элемент, с которым выбранный минимум меняется местами.
7) Д. Кнут. Искусство программирования для ЭВМ. Т.3. Сортировка и поиск (любое издание).
8) Н. Вирт. Алгоритмы и структуры данных (любое издание).
9) Д. Л. Шелл назвал ее "сортировкой вставками с убывающим шагом".
10) Для других входных данных это число может быть значительно меньше или же еще больше.
11) Грохот - техническое "сито".
12) В оригинале QuickSort.

 

 

5. Лекция: Символы и строки. Множества:
Приемы работы с символьными и строковыми данными. Использование множеств. Задание больших множеств массивами.