Сортировка выбором в Паскале
Отыскивается максимальный элемент и переносится в конец массива. Затем эта операция последовательно применяется ко всем элементам кроме последнего, т.к. он находится на своем окончательном месте.
Пример 11.4. Упорядочить по возрастанию сгенерированный случайным образом массив из 10 целых чисел с использованием метода “замены”
Текст программы
Program up_repl;
Uses crt;
Const n =10; k1=10; k2=2*k1+1;
Type vec=array[1..n] of integer;
Var a,b,c :vec;
k,i,j,f,m :integer;
ch :char;
l :Boolean;
Begin
Repeat
ClrScr;
Randomize;
Write('Исходый массив a[i]=');
For i:=1 to n do
Begin
f:=Random(k2);
a[i]:=k1-f;
Write(a[i]:3);
End;
Writeln;
b:=a;
For k:=1 to n do
Begin
m:=100;
For i:=1 to n do
If m>b[i] then
begin
m:=b[i];j:=i;
end;
b[j]:=100; c[k]:=m
end;
Write('Упорядоченный массив c[i]=');
For i:=1 to n do Write(c[i]:3);
Readln;
ch:=ReadKey;
Until ch=#27;
End.
Результат работы программы
Исходный массив a[i]= 10 -5 -9 6 -5 7 -4 10 3 6
Упорядоченный массив c[i]= -9 -5 -5 -4 3 6 6 7 10 10
Сортировка обменом (метод пузырька) в Паскале
Последовательно сравниваются пары соседних элементов xi и xi+1 и, если xi > xi+1 то они переставляются. Затем процесс повторяется для следующей пары и т.д.
Пример 11.5. Упорядочить по возрастанию сгенерированный случайным образом массив из 10 целых чисел с использованием метода “пузырька”
Текст программы
Program up_case;
Uses crt;
Const n =10; k1=10; k2=2*k1+1;
Type vec=array[1..n] of integer;
Var a,b :vec;
k,i,f,r :integer;
ch :char;
l :Boolean;
Begin
Repeat
ClrScr;
Randomize;
Write('Исходный массив a[i]=');
For i:=1 to n do
Begin
f:=Random(k2);
a[i]:=k1-f;
Write(a[i]:3);
End;
Writeln;
b:=a;
Repeat
l:=true;
for i:=1 to n-1 do
If b[i]>b[i+1] then
Begin
r:=b[i];b[i]:=b[i+1]; b[i+1]:=r; l:=false;
End;
Until l;
Write('Упорядоченный массив b[i]=');
For i:=1 to n do Write(b[i]:3);
Readln;
ch:=ReadKey;
Until ch=#27;
End.
Результат работы программы:
Исходный массив a[i]= 6 -9-10 6 5 4 -4 -1 0 10
Упорядоченный массив b[i]=-10 -9 -4 -1 0 4 5 6 6 10
Сортировка вставками в Паскале
Пусть первые k элементов уже отсортированы. Берется (k+1)-й элемент и размещается среди k упорядоченных элементов так, чтобы упорядоченными оказались уже k+1 первых элементов. Этот метод применяется при k от 1 до n-1.