
- •Глава 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Его называют также «принцип нулей и единиц»