Сортировка подсчетом, сортировка по основанию и сортировка ведром

внешний интерфейс алгоритм
Сортировка подсчетом, сортировка по основанию и сортировка ведром

Начните с подсчета и сортировки

Сортировка подсчетом — это алгоритм сортировки, который не основан на сравнении элементов, а преобразует элементы сортируемого массива в значение индекса подсчитываемого массива, тем самым косвенно делая сортируемый массив последовательным.

Реализация сортировки подсчетом обычно имеет две формы: сортировка на основе вспомогательного массива и сортировка на основе ведра.

на основе вспомогательного массива

Весь процесс содержит три массива: массив A для сортировки, массив B для подсчета и массив C для вывода.

Проще говоря, это создание массива счетчиков B путем подсчета гистограммы распределения различных значений элементов в массиве A для сортировки, а затем вычисление суммы префиксов массива счетчиков B (этот шаг можно рассматривать как вычисление значения каждого элемента в массиве A для сортировки, информация о положении), и, наконец, присвоить соответствующие элементы выходному массиву C через цикл в обратном порядке, и выходной массив C является окончательным результатом сортировки.

image

image

Сортировать по сегментам

На самом деле сортировка ведрами используется для поддержания стабильности, потому что элементы в каждом ведре сортируются в структуре очереди, которая может поддерживать порядок элементов.

Основные шаги:

  1. Создает указанное количество сегментов на основе разницы между максимальным значением ключа элемента и наименьшим значением ключа и создает очередь в каждом сегменте.
  2. Пройдите массив для сортировки по порядку и поместите их в очередь соответствующего сегмента.
  3. Перейдите в порядке номеров корзин и выведите очереди в каждой корзине обратно в исходный массив по порядку.

image

image

image

Недостаточная сортировка подсчета

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

сортировка по основанию

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

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

image

Первый этап: поместите элементы в соответствующие корзины для однозначного числа.

image

Второй этап: поместите элементы в соответствующие корзины для десятизначного числа.

image

Третий этап: поместить элементы в соответствующие корзины для разряда сотен.

image

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

image

сортировка ведром

Сортировка сегментов — один из способов улучшить сортировку подсчетом.Основная идея состоит в том, чтобы распределить массив для сортировки по нескольким сегментам, а затем сортировать каждый сегмент по отдельности.Для сортировки в сегментах можно использовать различные алгоритмы, такие как сортировка вставками или Быстрая сортировка — это метод «разделяй и властвуй». После того, как каждое ведро отсортировано, упорядоченная последовательность в каждом ведре окончательно вынимается по очереди, то есть получается полный результат сортировки.

Максимальный и минимальный элементы массива для сортировки равны 19 и 1 соответственно, тогда общий интервал диапазона может быть определен как [0,19].Предполагая, что используются 4 сегмента, интервалы сегментов равны[0,4][5,9][10,14][15,19]. Видно, что количество бакетов можно контролировать в небольшом диапазоне, а емкость бакетов можно динамически расширять.

image

Поместите элементы в соответствующее ведро в соответствии со значением.

image

Выведите элементы по порядку в соответствии с порядком ведра, чтобы получить отсортированный результат.

image

Суммировать

  • Сортировку по основанию и сортировку ведра можно рассматривать как обобщенные версии сортировки подсчетом, использующие определенные меры для оптимизации процесса сортировки.
  • При сортировке ведрами, когда количество ведер принимает максимальное значение (max-min+1), она становится сортировкой подсчетом, поэтому при сортировке подсчетом это особый случай сортировки ведра.
  • Сортировку по основанию можно рассматривать как многораундовую сортировку ведра.Сортировка по основанию основана на значащем бите, и каждый значащий бит подвергается одному раунду сортировки ведра.
  • Когда в качестве основания используется максимальное значение, сортировка по основанию вырождается в сортировку по счету.

------------- Рекомендуем прочитать ------------

Краткое изложение моих проектов с открытым исходным кодом (машинное и глубокое обучение, НЛП, сетевой ввод-вывод, AIML, протокол mysql, чат-бот)

Зачем писать «Анализ проектирования ядра Tomcat»

2018 Алгоритмы структуры сводных данных

Сборник статей по машинному обучению за 2018 г.

Сводка статей о глубине Java за 2018 г.

Резюме по обработке естественного языка за 2018 г.

Резюме глубокого обучения за 2018 г.

Сводка статей об исходном коде JDK за 2018 г.

Обзор Java Concurrency Core за 2018 г.

Итоговые чтения за 2018 год


Поговори со мной, задай мне вопросы:

Добро пожаловать, чтобы следовать: