- •Разработка и анализ алгоритма сортировки методом простых вставок
- •Обзор алгоритмов сортировки
- •Оценка алгоритма сортировки
- •Классификация алгоритмов сортировки
- •Список основных алгоритмов сортировки
- •Алгоритмы устойчивой сортировки
- •Сортировка пузырьком
- •Сортировка перемешиванием
- •Гномья сортировка
- •Сортировка вставками
- •Блочная сортировка
- •Сортировка подсчётом
- •Сортировка слиянием
- •Сортировка с помощью двоичного дерева
- •Алгоритмы неустойчивой сортировки
- •Сортировка выбором
- •Сортировка Шелла
- •Пирамидальная сортировка
- •Быстрая сортировка
- •Поразрядная сортировка
- •Непрактичные алгоритмы сортировки
- •Случайная сортировка
- •Глупая сортировка
- •Блинная сортировка
- •Остальные алгоритмы сортировки
- •Топологическая сортировка
- •Внешняя сортировка
- •Основа алгоритма сортировки методом простых вставок
- •Заключение
Сортировка Шелла
Алгоритм сортировки, идея которого состоит в сравнении элементов, стоящих не только рядом, но и на расстоянии друг от друга. Иными словами — сортировка вставками с предварительными «грубыми» проходами. При сортировке Шелла сначала сравниваются и сортируются между собой ключи, отстоящие один от другого на некотором расстоянии d. После этого процедура повторяется для некоторых меньших значений d, а завершается сортировка Шелла упорядочиванием элементов при d = 1 (то есть, обычной сортировкой вставками). Эффективность сортировки Шелла в определённых случаях обеспечивается тем, что элементы «быстрее» встают на свои места.
Пирамидальная сортировка
Алгоритм сортировки, работающий в худшем, в среднем и в лучшем случае (то есть гарантированно) за Θ(n log n) операций при сортировке n элементов. Количество применяемой служебной памяти не зависит от размера массива (то есть, O(1)). Данный алгоритм сложен в реализации и неустойчив.
Быстрая сортировка
Часто называемая qsort по имени реализации в стандартной библиотеке языка Си — широко известный алгоритм сортировки, разработанный английским ученым Чарльзом Хоаром. Один из быстрых известных универсальных алгоритмов сортировки массивов (в среднем O(n log n) обменов при упорядочении n элементов), хотя и имеющий ряд недостатков.
Поразрядная сортировка
Алгоритм сортировки, числа сортируются по разрядам. Существует два варианта least significant digit (LSD) и most significant digit (MSD). При LSD сортировке, сначала сортируются младшие разряды, затем старшие. При MSD сортировке все наоборот. При LSD сортировке получается следующий порядок: короткие ключи идут раньше длинных, ключи одного размера сортируются по алфавиту, это совпадает с нормальным представлением чисел: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. При MSD сортировке получается алфавитный порядок, который подходит для сортировки строк. Например "b, c, d, e, f, g, h, i, j, ba" отсортируется как "b, ba, c, d, e, f, g, h, i, j". Если MSD применить к числам разной длины, то получим последовательность 1, 10, 2, 3, 4, 5, 6, 7, 8, 9.
Непрактичные алгоритмы сортировки
Случайная сортировка
Является очень неэффективным алгоритмом сортировки. Её используют только в образовательных целях, противопоставляя другим, более реалистичным алгоритмам. Если случайную сортировку использовать для сортировки колоды карт, то сначала в алгоритме нужно проверить, лежат ли все карты по порядку, и если не лежат, то подбросить колоду в воздух, проверить лежат ли теперь все карты по порядку, и повторять процесс, пока не отсортируется колода.
Глупая сортировка
Простой алгоритм сортировки. Для понимания и реализации этот алгоритм — простейший, но эффективен он лишь для небольших массивов. Сложность алгоритма: O(n3). Имеет нечто общее с сортировкой пузырьком: идёт поиск от начала массива, текущий элемент сравнивается со следующим, если следующий меньше, то производится обмен и возврат в начало цикла.
Блинная сортировка
Единственная операция, допустимая в алгоритме — переворот элементов последовательности до какого-либо индекса. В отличие от традиционных алгоритмов, в которых минимизируют количество сравнений, в блинной сортировке требуется сделать как можно меньше переворотов. Процесс можно визуально представить как стопку блинов, которую тасуют путём взятия нескольких блинов сверху и их переворачивания.