Последовательным просмотром чисел ai...,an найти наименьшее i такое, что ai>ai+1. Поменять ai и ai+1местами и возобновить просмотр с начала массива. Когда не удастся найти такое i, массив будет упорядочен нужным образом

code: #pascal
program PascalGuru;
 
var A:array[1..50] of integer; {объявление переменной 1-мерного массива}
    n,i,k:integer;  {переменные для цикла}
    swop:boolean;   {булевая переменная}
 
procedure exchange(var a,b:integer); {процедура меняющая местами 2 числа "a" и "b"}
var c:integer;
begin
c:=a; a:=b; b:=c; end; {--- конец процедуры обмена 2-х чисел}
{****************************************************************}
 
begin {начало программы}
writeln ('Vvedite razmer posledovatelinosti A:');  read (n);
for i:=1 to n do begin write ('A[',i,']='); readln (A[i]); end;{Ввод последовательности с клавиатуры}
 
write ('Vot vvedennaia vami posledovatelinosti A: ');
for i:=1 to n do write (A[i],'  ');   {Вывод введенной последовательности на экран}
writeln; writeln;
 
k:=n; {временной переменной присваиваем размер последовательности}
 
repeat  {начало цикла, сортирующего последовательность}
swop:=false;
for i:=1 to k-1 do   {цикл}
if A[i]>A[i+1] then begin {если последующий элемент больше текущего: }
exchange(A[i],A[i+1]); swop:=true; end; {обмениваем их}
k:=k-1; {уменьшаем продолжительность цикла }
until not swop;  {--- конец цикла, сортирующего последовательность}
 
 
write ('Vot otsortirovanaya posledovatelinosti A: ');
for i:=1 to n do write (A[i],'  ');     {Выводим на экран отсортированную последовательность}
 
 
readln;
end.      
Поделиться:

Похожие статьи: