Идея линейной сортировки по невозрастанию заключается в том, чтобы, последовательно просматривая весь массив, отыскать наибольшее число и поместить его на первую позицию, обменяв его с элементом, который ранее занимал первую позицию. Затем просматриваются все остальные элементы массива и выполнятся аналогичная операция по отбору из рассматриваемой части массива максимального элемента и обмену местами этого элемента и первого в рассматриваемой части и т.д.
program Sort_Lin; {Линейная сортировка по невозрастанию}
const
Count =20;
M:array [1..Count] of
byte=(9,11,12,3,19,1,5,17,10,18,3,19,17,9, 12,20,20,19,2,5);
var
I, J, N, L : Byte;
A : integer;
begin
Writeln('Исходный массив: ');
for I := 1 to Count do Write(' ', M[I]); Writeln;
A:=0;
for I := 1 to Count — 1 do {Изменять размер неотсортированной части массива}
for J:=I+1 to Count do {Сравниваем поочередно 1-й элемент неотсортированной части массива со всеми от I+1-го до конца}
begin
А: =А+1;
if M[I] < М[J] then {Если в неотсортированной части массива нашли элемент, больший, чем I-й, то обменять их местами}
begin
N := М[I]; {Запомнить, на время значение М[1]}
М[I] := М[J]
M[J] := N;
end;
for L := 1 to Count do Write(' ', M[L]); Writeln('Число итераций =' ,A);
end;
end.
|