Отсортировать элементы квадратной вещественной матрицы размерности n, применив пузырьковую сортировку слева направо — Pascal(Паскаль)

type
  mas=array[1..20,1..20] of double;
var
  ar:mas;
  val:real;
  i,j,n,cnt:integer;
 
  procedure FillArray(razm:integer; var a:mas);
    var
      i,j:integer;
    begin
      randomize;
      for i:=1 to razm do
        for j:=1 to razm do
          a[i,j]:=(random(40)/100)+random(5);
    end;
 
  procedure PrintArray(razm:integer; var a:mas);
    var
      i,j:integer;
    begin
      for i:=1 to razm do
        begin
          for j:=1 to razm do
            write(a[i,j]:3:2,' ');
          writeln;
        end;
    end;
 
  procedure SortArray(razm:integer; var a:mas);
  var
    isSort:boolean;
    i,j:integer;
  begin
  isSort:=false;cnt:=0;
  while not isSort do
    begin
      i:=1;
      while i<=n do
        begin
          isSort:=true;
          j:=1;
          while j<n do
            begin
              inc(cnt);
              if a[i,j]<a[i,j+1] then
                begin
                val:=a[i,j];
                a[i,j]:=a[i,j+1];
                a[i,j+1]:=val;
                isSort:=false;
                j:=n;
                end
              else
                inc(j);
            end;
          if isSort then
            inc(i);
        end;
    end;
  end;
 
begin
  Writeln('Введите размерность матрицы A[n,n]');
  Write('n=');Readln(n);
  // заполнение массива;
  FillArray(n, ar);
  // вывод массива;
  Writeln('Исходный массив');
  PrintArray(n,ar);
  // сортируем;
  SortArray(n,ar);
  Writeln;
  // вывод массива;
  Writeln('Итоговый массив');
  PrintArray(n,ar);
  Writeln('Всего проходов:', cnt);
  Readln;
end.

Leave a Comment

4 + = 10