Сортировка по ячейкам
Эта статья нуждается в дополнительных цитатах для проверки . ( июль 2017 г. ) |
Сорт | Алгоритм сортировки |
---|---|
Структура данных | Множество |
Худшая производительность | , где N — диапазон значений ключа, а n — размер входных данных. |
Наихудшая пространственная сложность | |
Оптимальный | Если и только если |
Сортировка по ячейкам — это алгоритм сортировки , который подходит для сортировки списков элементов, в которых количество элементов n и длина N диапазона возможных значений ключа примерно одинаковы. [1] Это требует времени O ( n + N ). Она похожа на сортировку с подсчетом , но отличается тем, что она «перемещает элементы дважды: один раз в массив сегментов и снова в конечный пункт назначения, [тогда как] сортировка с подсчетом создает вспомогательный массив, а затем использует этот массив для вычисления конечного пункта назначения каждого элемента и перемещения предмет там». [2]
Алгоритм «ячейки» работает следующим образом:
- Учитывая массив значений, которые нужно отсортировать, создайте вспомогательный массив изначально пустых «ячеек», по одной ячейке для каждого ключа в диапазоне ключей в исходном массиве.
- Просматривая исходный массив, поместите каждое значение в ячейку, соответствующую его ключу, так, чтобы каждая ячейка в конечном итоге содержала список всех значений с этим ключом.
- Выполните итерацию по массиву ячеек в порядке возрастания ключей и для каждой ячейки поместите ее элементы в исходный массив в порядке возрастания.
Пример
[ редактировать ]Предположим, что кто-то сортирует эти пары значений по их первому элементу:
- (5, «привет»)
- (3, «пирог»)
- (8, «яблоко»)
- (5, «король»)
Для каждого значения от 3 до 8 мы устанавливаем ячейку, а затем перемещаем каждый элемент в свою ячейку:
- 3: (3, «пирог»)
- 4:
- 5: (5, «здравствуйте»), (5, «король»)
- 6:
- 7:
- 8: (8, «яблоко»)
Затем массив ячеек повторяется по порядку, и элементы перемещаются обратно в исходный список.
Разница между сортировкой по ячейкам и сортировкой с подсчетом заключается в том, что при сортировке с подсчетом вспомогательный массив не содержит списков входных элементов, а только считает:
- 3: 1
- 4: 0
- 5: 2
- 6: 0
- 7: 0
- 8: 1
Для массивов, где N намного больше n , сортировка сегментами — это обобщение, более эффективное с точки зрения пространства и времени.
См. также
[ редактировать ]- Принцип «ячейки»
- счастливый корень
- Очередь сегментов , связанная структура данных приоритетной очереди.
Ссылки
[ редактировать ]- ^ «Словарь алгоритмов и структур данных NIST: сортировка по ячейкам» .
- ^ Блэк, Пол Э. «Словарь алгоритмов и структур данных» . НИСТ . Проверено 6 ноября 2015 г.