Напишите вариант метода пузырька, который заканчивает работу, если на очередном шаге внешнего цикла не было перестановок. (pascal)
Const
n = 10;
var
a: array[1..n] of integer;
i, j, t: integer;
flag:boolean;
begin
Randomize;
Writeln(Исходный массив);
for i := 1 to n do
begin
a[i] := random(101)-50;
Write(a[i]:4)
end;
Writeln;
i:=1;
repeat
flag:=true;
for j := 1 to n-i do
if a[j] > a[j+1] then
begin t := a[j]; a[j] := a[j+1]; a[j+1] := t; flag:=false end;
Inc(i);
until (i>n-1) or flag;
Writeln(Отсортированный по возрастанию массив);
for i := 1 to n do Write(a[i]:4);
Writeln
end.
Тестовое решение:
Исходный массив
-32 -7 2 2 50 -33 1 31 4 -16
Отсортированный по возрастанию массив
-33 -32 -16 -7 1 2 2 4 31 50
Оцени ответ