Сортировка выбором
Сортировка выбором ( прямой
выбор,линейный выбор )
Согласно этому методу,начиная с первой записи
таблицы, осуществляется поиск элемента,имеющего
наименьшее значение ключа. После того,
как этот элемент найден, он меняется местами с
первой записью в таблице. В результате такой
перестановки запись с наименьшим значением
ключа помещается в первую позицию в таблице.
Затем, начиная со второго элемента таблицы,
осуществляется поиск второго наименьшего ключа.
Найденный элемент меняется местами со вторым
элементом таблицы. Этот процесс продолжается до
тех пор, пока все записи не будут расположены в
порядке возрастания кодов ключа. Число сравнений
в данном методе равно n(n-1)/2 (в среднем порядка n**2),где
n - количество записей в таблице. Максимальное
количество перестановок при такой сортировке
равно (n-1). В качестве примера рассмотрим шаги
алгоритма для таблицы со следующими значениями
ключей:
23 11 4
56 9 35 7
Таблица на различных этапах упорядочения (подчеркнуты
перемещаемые элементы) :
23 11 4
56 9 35 7
~~~ ~~~
4 11 23
56 9 35 7
~~~ ~~~
4 7 23
56 9 35 11
~~~ ~~~
4 7
9 56 23 35 11
~~~ ~~~~
4 7 9
11 23 35 56
~~~
Линейный выбор с подсчетом
При упорядочении таблицы этим методом
необходима память для хранения исходной и
упорядоченной таблиц,а также дополнительно
должна быть выделена память под счетчик для
каждой записи таблицы.
Просмотр таблицы начинается с первой записи. Ее
ключ сравнивается с ключами последующих записей.При
этом счетчик большего из сравниваемых ключей
увеличивается на 1. При втором просмотре таблицы
первый ключ уже не рассматривается,второй ключ
сравнивается со всеми последующими.Результаты
сравнений фиксируются в счетчиках. Для таблицы,содержащей
n элементов,этот процесс повторяется n-1 раз.
После выполнения всех просмотров счетчик
каждого элемента указывает, какое количество
ключей таблицы меньше ключа этого элемента.Эти
счетчики используются затем в качестве индексов
элементов результирующей таблицы. Поместив
записи в результирующую таблицу в соответствии
со значениями их счетчиков ,получим
упорядоченную таблицу. Выполняется n-1 просмотров
с n/2 сравнениями в среднем при
каждом просмотре.Значения счетчиков
изменяются столько раз,сколько выполняется
сравнений.
Число пересылок равно n.
Рассмотрим пример использования этого метода.
Исходная таблица и массив счетчиков:
--------------T-----------T----------¬ ¦
индексы ¦
ключи ¦ счетчики ¦
+-------------+-----------+----------+ ¦
0 ¦ 9
¦ 0 ¦ ¦
1 ¦ 5
¦ 0 ¦ ¦
2 ¦ 10
¦ 0 ¦ ¦
3 ¦ 2
¦ 0 ¦
L-------------+-----------+-----------
Рассмотрим изменение массива счетчиков в
результате просмотров:
1-й 2-й 3-й Результирующая
таблица (ключи):
2 2
2 2
0 1
1 5
1 2
3 9
0 0
0 10
Содержание
|