- •Глава 4. Сортировка в оперативной памяти
- •4.1. Исходные понятия
- •4.2. Сортировка подсчётом
- •4.3.1.Метод простых вставок
- •4.3.2. Метод бинарных вставок
- •4.3.3. Метод двухпутевых вставок
- •4.4. Обменные сортировки
- •4.4.1. Метод пузырька
- •4.4.2. Быстрая сортировка
- •4.4.3. Обменная поразрядная сортировка
- •4.5. Сортировки посредством выбора
- •4.5.1. Сортировка с использованием бесконечно большого ключа
- •4.5.2. Сортировка посредством простого выбора
- •4.5.3. Сортировка методом выбора из дерева
- •4.5.4. Пирамидальная сортировка
- •4.5.5. Сортировка методом слияния
- •4.5.6. Сортировка методом распределения
- •4.6. Аппаратная сортировка (Сортирующие сети)
4.6. Аппаратная сортировка (Сортирующие сети)
К сортирующим сетям (или сетям сортировки) относят класс методов упорядочения, реализация которых опирается на специальные технические устройства и не зависит от предыстории сравнений: план сравнений изначально фиксирован и не меняется в процессе сортировки. Если произведено сравнение ключей и, то дальнейшая процедура упорядочения стандартна дляи.
Сортирующая сеть составляется из компараторов («сравнивателей») ― устройств, имеющих два входа для пары сравниваемых чисел и два выхода. Левый выход предназначен для большего значения , а правый для большего(рис. 28). Вместо терминакомпаратор употребляют также термин модуль компаратора, когда обсуждается не его техническое исполнение, а логическая схема алгоритма сортировки. Сети сортировки допускают эффективную аппаратную реализацию.
Вход
k2
Вход
k1
Выход
Выход
max(k1,k2)
min(k1,k2)
Рис. 28.
Рассмотрим принцип действия сортирующей сети на примере сортировки четырёх ключей с помощью сети из пяти компараторов, соединённых в соответствии с рис. 29. Компаратор (а) сравниваети. На его верхнем выходе оказывается ключ , а на правом ― ключ. Следующий компаратор (б) аналогичным образом имеет на входе ключии, а на его выходах в таком же порядке оказываются и.
K1=48 10 10 10
K1=10 48 31 22 22
K1=31 22 22 31 31
K1=22 31 48 48
Рис. 29.
Далее на входы компаратора (в) подаются и, а на выходах оказываются: на верхнем, который является наименьшим из всех четырёх, а на правом ― . Аналогично, на входы компаратора (г) подаютсяи,а на выходах оказываются: на верхнем — , а на нижнем ― , который является наибольшим из всех четырёх.
Теперь остаётся неопределённым положение двух средних элементов относительно друг друга. Поэтому на вход компаратора (д) подаются и; на его верхнем выходе оказывается второй по величине ключ, а на нижнем ― третий. Выходы компараторов (в), (г), и (д) содержат полностью упорядоченный набор исходных ключей.
Количество компараторов называется размером сортирующей сети, а максимальное число компараторов, проходимое одним входным элементом ― её глубиной.
Скорость сортировки повышается, если одновременно выполняются операции сравнения неперекрывающихся пар на одной и той же глубине. Так при сортировке четырёх элементов параллельно могут выполняться первое и второе сравнения, а также третье и четвёртое.
Для проверки того, что построенная сеть будет сортировать все возможные входные последовательности достаточно проверить правильность сортировки на всех возможных перестановках множества, поскольку для сортировки важны не конкретные значения ключей, а соотношения больше/меньше между ними. Фактически же можно обойтись существенно меньшим числом изпроверок (при, ирастёт значительно быстрее, чем:
):
Теорема (двоичный принцип1). Если сеть с входами правильно сортирует все последовательности из нулей и единиц, то она сортирует в таком же порядке любую последовательность изключей ([9], с. 249]).
Минимально возможный размер сети для сортировки элементов априори не известен и является предметом специального исследования для каждого конкретного значения.
1Его называют также «принцип нулей и единиц»