Напишите вариант метода пузырька, который заканчивает работу, если на очередном шаге внешнего цикла не было перестановок. (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


Оцени ответ
Подпишись на наш канал в телеграм. Там мы даём ещё больше полезной информации для школьников!

Загрузить картинку
×