Сортировка — различия между версиями
Yurik (обсуждение | вклад) |
Yurik (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
<wikitex> | <wikitex> | ||
+ | {{в разработке}} | ||
''Сортировкой'' называется процесс упорядочивания множества объектов по какому-либо признаку. | ''Сортировкой'' называется процесс упорядочивания множества объектов по какому-либо признаку. | ||
Обычно таким признаком служит лексикографический номер. | Обычно таким признаком служит лексикографический номер. | ||
+ | |||
+ | блаблабла | ||
== Классификация сортировок == | == Классификация сортировок == | ||
Строка 10: | Строка 13: | ||
=== Время работы. === | === Время работы. === | ||
− | Эта классификация является самой важной. В основном временные оценки бывают | + | Эта классификация является самой важной. В основном временные оценки бывают $O(n \log n)$ и $O(n^2)$. |
* Квадратичные. Такие сортировки самые простые в понимании. | * Квадратичные. Такие сортировки самые простые в понимании. | ||
− | ** [[Сортировка пузырьком| Сортировка пузырьком (Bubble Sort)]] | + | ** [[Сортировка пузырьком| Сортировка пузырьком (Bubble Sort)]] - Алгоритм состоит в повторяющихся проходах по сортируемому массиву. На каждой итерации последовательно сравниваются соседние элементы, и, если порядок в паре неверный, то элементы меняют местами. |
− | ** [[Сортировка вставками| Сортировка вставками (Insertion Sort)]] | + | ** [[Сортировка вставками| Сортировка вставками (Insertion Sort)]] - На каждом шаге алгоритма мы выбираем один из элементов входных данных и вставляем его на нужную позицию в уже отсортированной части массива до тех пор, пока весь набор входных данных не будет отсортирован. |
− | ** [[Сортировка выбором| Сортировка выбором (Selection Sort)]] | + | ** [[Сортировка выбором| Сортировка выбором (Selection Sort)]] - На каждом $i$-ом шаге алгоритма находим $i$-ый минимальный элемент и меняем его местами с $i$-ым элементом в массиве. |
+ | |||
+ | |||
+ | * $O(n \log n)$. Нормальное время сортировки. Это минимальное время, за которое можно отсортировать массив, [[Теорема о нижней оценке для сортировки сравнениями|используя только сравнения]]. | ||
+ | ** [[Быстрая сортировка|Быстрая сортировка (Quick Sort)]]. Один из самых известных и широко используемых алгоритмов сортировки. Алгоритм состоит в выборе опорного элемента, разделении массива на 2 части относительно опорного и в сортировке полученных частей. | ||
+ | ** [[Сортировка слиянием|Сортировка слиянием (Merge Sort)]]. Алгоритм состоит в разделении массива пополам, сортировки половин и их слиянии. | ||
+ | ** [[Сортировка кучей|Пирамидальная сортировка (Heap Sort)]]. Строим из массива кучу, по очереди извлекаем минимум кучи. | ||
+ | ** [[Карманная сортировка|Карманная сортировка (Bucked Sort)]] - распихиваем элементы в $k$ карманов, сортируем элементы внутри карманов, из каждого кармана данные записываются в массив в порядке разбиения. | ||
+ | ** [[Цифровая сортировка|Цифровая сортировка (Radix Sort)]] - сортировка, аналогичная карманной. карманы в данном случае - цифры от 0 до 9. | ||
+ | |||
+ | * Прочие сортировки. | ||
+ | ** [[Сортировка подсчетом]]. Сортировка объектов, ключи которых входят в заранее известный диапазон целых чисел. Время работы - $O(n + k)$, где $k$ - длина диапазона. | ||
+ | ** [[Сортировка Хэна (или Хана?)|Сортировка Хэна]] - упоротая сортировка целых чисел с оценкой $O(n \log \log n)$ | ||
Версия 00:57, 12 июня 2012
<wikitex>
Эта статья находится в разработке!
Сортировкой называется процесс упорядочивания множества объектов по какому-либо признаку.
Обычно таким признаком служит лексикографический номер.
блаблабла
Классификация сортировок
Будем рассматиривать сортировки массива из $n$ элементов множества $A$, причем на $A$ должно быть выполнено отношение эквивалентности.
Время работы.
Эта классификация является самой важной. В основном временные оценки бывают $O(n \log n)$ и $O(n^2)$.
- Квадратичные. Такие сортировки самые простые в понимании.
- Сортировка пузырьком (Bubble Sort) - Алгоритм состоит в повторяющихся проходах по сортируемому массиву. На каждой итерации последовательно сравниваются соседние элементы, и, если порядок в паре неверный, то элементы меняют местами.
- Сортировка вставками (Insertion Sort) - На каждом шаге алгоритма мы выбираем один из элементов входных данных и вставляем его на нужную позицию в уже отсортированной части массива до тех пор, пока весь набор входных данных не будет отсортирован.
- Сортировка выбором (Selection Sort) - На каждом $i$-ом шаге алгоритма находим $i$-ый минимальный элемент и меняем его местами с $i$-ым элементом в массиве.
- $O(n \log n)$. Нормальное время сортировки. Это минимальное время, за которое можно отсортировать массив, используя только сравнения.
- Быстрая сортировка (Quick Sort). Один из самых известных и широко используемых алгоритмов сортировки. Алгоритм состоит в выборе опорного элемента, разделении массива на 2 части относительно опорного и в сортировке полученных частей.
- Сортировка слиянием (Merge Sort). Алгоритм состоит в разделении массива пополам, сортировки половин и их слиянии.
- Пирамидальная сортировка (Heap Sort). Строим из массива кучу, по очереди извлекаем минимум кучи.
- Карманная сортировка (Bucked Sort) - распихиваем элементы в $k$ карманов, сортируем элементы внутри карманов, из каждого кармана данные записываются в массив в порядке разбиения.
- Цифровая сортировка (Radix Sort) - сортировка, аналогичная карманной. карманы в данном случае - цифры от 0 до 9.
- Прочие сортировки.
- Сортировка подсчетом. Сортировка объектов, ключи которых входят в заранее известный диапазон целых чисел. Время работы - $O(n + k)$, где $k$ - длина диапазона.
- Сортировка Хэна - упоротая сортировка целых чисел с оценкой $O(n \log \log n)$
</wikitex>