Конечное значение параметра цикла n-i убирает лишние перестановки по j
В операторе цикла
Writeln;
End;
Begin
BEGIN
Uses crt;
Program SORTIROVKA_1;
Пример 1.
В этом методе сравниваются два соседних элемента массива.
BEGIN
Program Vvod;
Type mass = array[1..5] of integer;
Const A: mass = ( 2, -4, 3, -6, 8 );
Var B: mass; {или B,C: mass;}
C: array[1..4] of integer;
i: byte;
{ ввод массива B с клавиатуры }
writeln(‘ введите массив B‘);
For i := 1 to 5 do read(b[i]);
{ ввод массива C с клавиатуры }
writeln(‘ введите массив С‘);
For i := 1 to 4 do read(c[i]);
{ вывод массива A на экран }
writeln(‘ массив A:’);
For i := 1 to 5 do write(A[i]:5,’ ‘);
writeln; {выводится вектор-строка}
{ вывод массива B на экран }
writeln(‘ массив B:’);
For i := 1 to 5 do
writeln(B[i]); {выводится вектор-столбец}
СОРТИРОВКА МАССИВОВ
1. Сортировка с помощью прямого обмена ( метод “пузырька” ).
Если первый из них больше второго, то эти элементы меняют местами (перестановка ) и т.д., т.е. Max элемент выдавливается в конец массива ( при сортировке по возрастанию ). Затем эта операция повторяется снова до окончательного упорядочивания.
i= 1 2 3 4
5 4 1 1
4 1 3 2
1 3 2 3
3 2 4 4
2 5 5 5
Сортировка одномерного массива (по возрастанию).
CONST A:array[1..5] of integer=(5,4,1,3,2);
n=5;
VAR i, j, k, m, buf: integer;
for i:=1 to n-1 do { можно to n do}
for j:=1 to n-1 do { можно to n-i do}
if a[j] >a[j+1] then
buf:=a[j+1] ;
a[j+1] :=a[j] ;
a[j] :=buf;
for i:=1 to 5 do
write(a[i],' ');
массив A=(5, 4, 1, 3, 2);
i=1 j=1 5>4 да 4, 5, 1, 3, 2
j=2 5>1 да 4, 1, 5, 3, 2
j=3 5>3 да 4, 1, 3, 5, 2
j=4 5>2 да 4, 1, 3, 2, 5 {за один проход выдавили вправо макс=5}