Идея. Сортировка линейным выбором с обменом рассматривает все записи исходной последовательности для нахождения записи с необходимым ключом и размещает ее в готовой последовательности на требуемой позиции. Просмотр последовательности записей, длина которой уменьшается на единицу при каждом просмотре, заканчивается, когда в
ней остается только одна запись, занимающая последнюю позицию.
Структурограмма алгоритма сортировки методом выбора с обменом приведена следующем рисунке.
|
В течениe 1-го просмотра находится запись с наименьшим ключом, которая меняется местами с первой записью. 2-й просмотр идентичен 1-му с той лишь разницей, что первая запись исключается из рассмотрения. 3-й просмотр начинается сравнением ключа из 3-й позиции и т.д. Эта
процедура заканчивается, когда свое место занимает (N-1)-я запись.
Пример.
5, 4, 1, 2, 3
J=1, L=1,
I=2; L=2,
I=3; L=3,
I=4;
I=5;
1 4 5 2 3
J=2, L=2,
I=3;
I=4; L=4,
I=5;
1 2 5 4 3
J=3, L=3,
I=4; L=4,
I=5; L=5,
1 2 3 4 5
J=4, L=4,
I=5;
1, 2, 3, 4, 5
procedure SortMin (var Arr: array of Integer; n: Integer);var i, j: Integer; Min, Pos, Temp: Integer;begin for i:= 0 to n - 2 do begin Min:= Arr [i]; Pos:= i; for j:= i + 1 to n-1 do if Arr [j] < Min then begin Min:= Arr [j]; Pos:= j; end;If Pos<>I then begin Temp:= Arr [i]; Arr [i]:= Arr [Pos]; Arr [Pos]:= Temp; end; end;end;Метод выбора характеризуется следующими параметрами.
|
|
Качественные:
1. Простота программирования.
2. Требуется наличие всех записей до начала сортировки.
3. Число записей сокращается от просмотра к просмотру. На
каждом последующем просмотре выполняется на одно сравнение меньше.
4. Нет ускорения, если записи отсортированы.
Количественные:
1. Число сравнений N*(N-1)/2.
2. Число перестановок (обменов) - (N-1). (мин =0)
3. Дополнительный объем памяти требуется для реализации операции
обмена.