Сортировка простым выбором.
Рассмотрим идею этого метода на примере. Пусть исходный массив А состоит из 10 элементов : 5 13 7 9 1 8 16 4 10 2.
После сортировки массив : 1 2 4 5 7 8 9 10 13 16
Максимальный элемент текущей части массива заключен в кружок, а элемент, с которым происходит обмен, в квадратик. Скобкой помечена рассматриваемая часть массива.
5 13 7 9 1 8 16 4 10 2
5 13 7 9 1 8 2 4 10 16 |
1 шаг Рассмотрим весь массив и найдем в нем максимальный элемент - 16. Поменяем его местами с последним элементом - с числом 2.
2 шаг. Рассмотрим часть массива, исключая последний элемент. Максимальный элемент этой части - 13, он стоит на втором месте. Поменяем его местами с последним элементом этой части - с числом 10.
И т.д.
Фрагмент программы :
for i:=n downto 2 do
begin {цикл по длине рассматриваемой части массива}
maxi:=i;
for j:=1 to i-1 do if a[j]>a[maxi] then maxi:=j;
if maxi<>i then begin {перестановка элементов}
k:=a[i]; a[i]:=a[maxi]; a[maxi]:=k
end;
end;
«Пузырьковый метод»
Массив просматривают слева направо. Каждый предыдущий элемент сравнивается с последующим. Если предыдущий элемент больше последующего, то предыдущий и последующий элементы меняются местами.
Program sort1;
const n=10;
label metka;
var a: array [1..n] of integer;
i, c, k : integer;
begin
for i:=1 to n do readln(a[i]);
metka: k=0; {счетчик перестанокок}
for i:=1 to n-1 do
if a[i]>a[i+1] then begin c:=a[i];
a[i]:=a[i+1];
a[i+1]:=c;
k:=1;
end;
if k=1 then goto metka
else writeln(‘упорядочен‘);
for i:=1 to n do writeln(a[i]);
еnd.
Дата добавления: 2015-01-15; просмотров: 913;