Burstsort - Burstsort
Эта статья включает в себя список общих Рекомендации, но он остается в основном непроверенным, потому что ему не хватает соответствующих встроенные цитаты.Июль 2017 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Учебный класс | Алгоритм сортировки |
---|---|
Структура данных | Trie |
Худший случай спектакль | О(wn) |
Худший случай космическая сложность | О(wn) |
Burstsort и его варианты являются эффективными кеш-алгоритмами для сортировки струны. Это варианты традиционного радиальная сортировка но быстрее для больших наборы данных общих строк, впервые опубликованных в 2003 году, а некоторые версии оптимизации были опубликованы позже.[1]
Алгоритмы пакетной сортировки используют три для хранения префиксов строк, с растущие массивы указателей как конечных узлов, содержащих отсортированные уникальные суффиксы (называемые ведра). Некоторые варианты копируют хвосты строк в корзины. Когда сегменты превышают заданный порог, сегменты "разбиваются" на попытки, давая сорту свое имя. Более поздний вариант использует индекс сегмента с меньшими вложенными сегментами, чтобы уменьшить использование памяти. Большинство реализаций делегируют функцию быстрой сортировки по нескольким клавишам, расширению трехсторонней быстрой сортировки по основанию счисления, для сортировки содержимого сегментов. Разделив входные данные на сегменты с общими префиксами, сортировку можно производить с эффективным использованием кеша.
Burstsort был представлен как вид, похожий на Сортировка по основанию MSD,[1] но работает быстрее из-за того, что кэширование и связанные с ним системы счисления хранятся ближе друг к другу из-за особенностей структуры trie. Он использует особенности строк, которые обычно встречаются в реальном мире. И хотя асимптотически это то же самое, что и радииксная сортировка, с временной сложностью О(wn) (ш - длина слова и п - количество сортируемых строк), но из-за лучшего распределения памяти он имеет тенденцию быть вдвое быстрее для больших наборов данных строк. Он был объявлен «самым быстрым из известных алгоритмов для сортировки больших наборов строк».[2]
Рекомендации
- ^ а б Sinha, R .; Зобель, Дж. (2005). «Сортировка больших наборов строк с учетом кеширования с динамическими попытками» (PDF). Журнал экспериментальной алгоритмики. 9: 1.5. CiteSeerX 10.1.1.599.861. Дои:10.1145/1005813.1041517.
- ^ https://news.ycombinator.com/item?id=445221
- Производная пакетной сортировки (C-burstsort) быстрее, чем Burstsort: Синха, Ранджан; Зобель, Джастин; Кольцо, Дэвид (январь 2006 г.). «Эффективная кеш-сортировка строк с помощью копирования» (PDF). Журнал экспериментальной алгоритмики. 11 (1.2): 1.2. CiteSeerX 10.1.1.85.3498. Дои:10.1145/1187436.1187439. Архивировано из оригинал (PDF) на 2007-10-01. Получено 2007-05-31.
- Тип данных, используемый в пакетной сортировке: Хайнц, Штеффен; Зобель, Джастин; Уильямс, Хью Э. (апрель 2002 г.). «Пакетные попытки: быстрая и эффективная структура данных для строковых ключей» (PDF). ACM-транзакции в информационных системах. 20 (2): 192–223. CiteSeerX 10.1.1.18.3499. Дои:10.1145/506309.506312. Архивировано из оригинал (PDF) на 2013-12-05. Получено 2007-09-25.
- Синха, Ранджан; Зобель, Джастин (2003). «Эффективная сортировка больших наборов строк на основе Trie» (PDF). Материалы 26-й Австралазийской конференции по информатике. 16. С. 11–18. CiteSeerX 10.1.1.12.2757. ISBN 978-0-909-92594-9.
- Синха, Ранджан; Вирт, Энтони (март 2010 г.). "Engineering Burstsort: к быстрой сортировке строк на месте" (PDF). ACM Журнал экспериментальной алгоритмики. 15 (2.5): 1–24. Дои:10.1145/1671970.1671978.
внешняя ссылка
- Реализация пакетной сортировки на Java: burstsort4j
- Джуди массивы это тип пакетной сортировки копий: C реализация