Анонимно

Напишите вариант метода пузырька, который заканчивает работу, если на очередном шаге внешнего цикла не было перестановок. PascalABC

Ответ

Анонимно
begin
   var n := 10;
   var a := ArrRandom(n, -50, 50); 
   
   println('Исходный массив:');
   a.Println;
   
   var noChanges: boolean;
   repeat
      noChanges := true;
      for var i := 0 to n - 2 do
         if a[i] > a[i + 1] then
         begin
            swap(a[i], a[i + 1]);
            noChanges := false;
         end;
   until noChanges;
   
   println('Отсортированный массив:');
   a.Println;
end.