Сортировка массива
Сортировка массива - это упорядочивание элементов массива по некоторому признаку, расстановка в определенном порядке.
- Убывающий порядок - каждый следующий элемент должен быть меньше предыдущего (по убыванию)
- Возрастающий - каждый следующий элемент больше предыдущего.
Если не все элементы различны, то надо говорить о неубывающем (или невозрастающем) порядке.
- Неубывающий - каждый следующий элемент не меньше предыдущего.
- Невозрастающий - каждый следующий элемент должен быть не больше предыдущего .
СОРТИРОВКА ВЫБОРОМ
- Находим максимальный (минимальный) элемент массива, меняем его местами с первым элементом;
- В не отсортированной части массива снова выбираем максимальный (минимальный) элемент , он меняется с 1-м из неотсортированных элементов массива.
- Повторяем до тех пор, пака в не отсортированной части не останется один элемент.
Пример программы:
Program SORT_PV;{Сорт. простым выбором}
uses crt;
var a:array[1..10] of integer; i,j,m,k:integer;
Begin
ClrScr; Randomize;
for i:=1 to 10 do
Begin
a[i]:=Random(101)-50;
Write(a[i]:3);{вывод исход. массива}
end;
for i:=10 downto 2 do
begin
m:=a[i];
k:=i;
for j:=1 to i-1 do
if a[j]>m then
begin
k:=j;
m:=a[k]
end;
if k<>i then
begin
a[k]:=a[i];
a[i]:=m
end;
end;
Writeln; {перевод строки}
writeln('Итоговый массив:');
For i:=1 to 10 do Write(a[i]:3);
end.
СОРТИРОВКА МЕТОДОМ «ПУЗЫРЬКА» (ПРОСТЫМ ОБМЕНОМ)
- Сравниваем 1-й и 2-й элемент массива и, если первый элемент больше (меньше) второго, производим замену;
- Сравниваем 2-й и 3-й элемент, также производим замену, если 2-й элемент массива больше (меньше) 3-го элемента;
- Повторяем просмотр массива сначала и производим обмен;
- Просмотр-обмены продолжаем до тех пор, пока при очередном проходе не будет произведено ни одного обмена – это значит, что все элементы упорядочены.
Program SORT_PV;
uses crt;
var a:array[1..10] of integer; i,j,m:integer;
Begin
ClrScr; Randomize;
for i:=1 to 10 do
Begin
a[i]:=Random(101)-50;
Write(a[i]:3);{вывод исход. массива}
end;
For j:=1 To 9 do {цикл по номеру просмотра}
For i:=1 To 10-j do
If a[i]>a[i+1] then
begin
m:=a[i]; обмен
a[i]:=a[i+1]; соседних
a[i+1]:=m; элементов
end;
Writeln; {перевод строки}
writeln('Итоговый массив:');
For i:=1 to 10 do Write(a[i]:3);
end.