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