Флеш-сортировка :: FlashSort
Метод изобрёл профессор физики Карл-Дитрих Нойберт. Обрабатывая результаты экспериментов, он пришёл к выводу, что огромные массивы статистических данных вполне логично сортировать, прибегнув к теории вероятностей.Общая суть такова. Проходим по массиву и каждый элемент переставляем примерно на своё место. Сформировав достаточно быстро почти отсортированный массив, затем доупорядочиваем вставками.
Другие алгоритмы, использующие принципы приблизительного распределения и последующей вставки - сортировка царя Соломона и сортировка аппроксимацией.
Алгоритм
Этап 1. Находим в массиве минимум и максимум. С помощью них в дальнейшем определяется, примерно в какой части массива каждый элемент должен находиться.
Этап 2. Строим вспомогательную таблицу распределения. Все элементы, в зависимости от величины, разбиваются на классы и в этой дополнительной таблице указывается сколько элементов принадлежит тому или иному классу.Если распределить элементы массива на m классов, то номер класса для элемента Ai определяется по формуле:
Эмпирическим путём установлено, что оптимальное количество классов m для массива из n элементов рассчитывается по формуле:m ≈ 0.42 n
Этап 3. Используя таблицу распределения, перераскидываем элементы примерно по своим местам.
Этап 4. Почти упорядоченный массив досортировываем простыми вставками.
Характеристики алгоритма
| Название | Флеш-сортировка (FlashSort) | |
|---|---|---|
| Автор | Карл-Дитрих Нойберт (Karl-Dietrich Neubert) | |
| Год | 1998 | |
| Класс | Сортировки распределением | |
| Подкласс | Сортировки подсчётом | |
| Устойчивость | Нет | |
| Сравнения | Нет | |
| Сложность по времени | Худшая | O(n2) |
| Средняя | O(n + m) | |
| Лучшая | O(n) | |
| Сложность по памяти | Общая | O(n + m) |
| Дополнительная | O(m) | |
Ссылки
Подсчёт с приблизительным распределением — чаще всего переизобретаемая сортировка
Ещё одна сортировка распределением












