Обменная сортировка простой выборкой.
Обменная сортировка простой выборкой.
Алгоритм сортировки простой выборкой, однако, редко применяется в том варианте, в каком он описан выше. Гораздо чаще применяется его, так называемый, обменный вариант. При обменной сортировке выборкой входное и выходное множество располагаются в одной и той же области памяти; выходное - в начале области, входное - в оставшейся ее части. В исходном состоянии входное множество занимает всю область, а выходное множество - пустое. По мере выполнения сортировки входное множество сужается, а выходное - расширяется.
Обменная сортировка простой выборкой показана в программном примере 3.8. Процедура имеет только один параметр - сортируемый массив.
{===== Программный пример 3.8 =====} Procedure Sort(var a : SEQ); Var x, i, j, m : integer; begin for i:=1 to N-1 do { перебор элементов выходного множества} { входное множество - [i:N]; выходное - [1:i-1] } begin m:=i; for j:=i+1 to N do { поиск минимума во входном множестве } if (a[j] < a[m]) then m:=j; { обмен 1-го элемента вх. множества с минимальным } if i<>m then begin x:=a[i]; a[i]:=a[m]; a[m]:=x; end;end; end;Результаты трассировки программного примера 3.8 представлены в таблице 3.5. Двоеточием показана граница между входным и выходным множествами.
Шаг | Содержимое массива а |
Исходный | :242 447 286 708_24_11 192 860 937 561 |
1 | _11:447 286 708_ 24 242 192 860 937 561 |
2 | _11_24:286 708 447 242 192 860 937 561 |
3 | _11_24 192:708 447 242 286 860 937 561 |
4 | _11_24 192 242:447 708 286 860 937 561 |
5 | _11_24 192 242 286:708 447 860 937 561 |
6 | _11_24 192 242 286 447:708 860 937 561 |
7 | _11_24 192 242 286 447 561:860 937 708 |
8 | _11_24 192 242 286 447 561 708:937 860 |
9 | _11_24 192 242 286 447 561 708 860:937 |
Результат | _11_24 192 242 286 447 561 708 860 937: |