Bucket sort для целых чисел - PullRequest
       26

Bucket sort для целых чисел

2 голосов
/ 20 марта 2010

Может кто-нибудь помочь мне с алгоритмом сортировки сегментов для целых чисел? Часто люди ошибочно говорят, что у них есть этот алгоритм, но на самом деле имеют счетную сортировку! Может быть, это работает аналогично, но это что-то другое.

Надеюсь, вы поможете мне найти правильный путь, потому что теперь я понятия не имею (книга Кормена и Википедия не очень полезны).

Заранее благодарим за все ваши ответы.

Ответы [ 2 ]

4 голосов
/ 20 марта 2010

Подсчет сортировки будет работать только на целых числах, в то время как сортировка ведра может работать на любом значении, кроме того, последний цикл немного отличается.

Подсчет сортировки поддерживает дополнительный массив целых чисел, который в основном подсчитывает, сколько существует определенного числа, а затем создает число снова, когда оно проходит через дополнительный массив в последнем цикле, что я под этим подразумевается - с точки зрения ООП, это не тот же объект, а новый объект с идентичным значением.

Тогда у нас есть сортировка ведра. Bucket sort проходит через массив, но вместо того, чтобы просто проходить ++ в соответствующем месте массива, он вставляет элемент в какой-то список (мне нравится использовать очередь, так что это стабильная сортировка). Затем в последнем цикле алгоритм проходит через весь дополнительный массив и распределяет элементы в каждом сегменте в массив. Таким образом, это один и тот же объект.

Если вы что-то сортируете и знаете, что диапазон чисел меньше, чем nlogn, это просто - используйте сортировку с подсчетом, если она целочисленную, и сортировку по сегменту, если у объекта есть дополнительные данные. Конечно, вы можете использовать сортировку по целочисленным значениям, но сортировка по подсчетам займет намного меньше места.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...