Сортировка матрицы по возрастанию

Задан двухмерный массив A(a_ij), де i=1,2…n , j=1,2…m, элементами которого являются целые числа. Упорядочить информацию в массиве в порядке возрастания.

Указания:

  • Изначальный массив задать самостоятельно.
  • На экран вывести начальный и полученный массивы.
code: #pascal
  1. uses crt;
  2. var a:array[1..50,1..50] of integer;{матрица}
  3.     m,n,i,j,k,tmp:integer; {размеры матрицы,счетчики циклов, буфер для обмена}
  4. begin
  5. clrscr;
  6. randomize;
  7. writeln('Введите размеры матрицы:');
  8. write(' Количество строк m=');
  9. repeat
  10. readln(m);
  11. until m in [1..50];
  12. write(' Количество столбцов n=');
  13. repeat
  14. readln(n);
  15. until n in [1..50];
  16. writeln;
  17. writeln('Исходная матрица:');
  18. for i:=1 to m do
  19.  begin
  20.   for j:=1 to n do
  21.    begin
  22.     a[i,j]:=random(100);{заполним матрицу случайными числами в инт[0,99]}
  23.     write(a[i,j]:4);
  24.    end;
  25.   writeln;
  26.  end;
  27. writeln;
  28. {сортировка матрицы пузырьком}
  29. for k:=1 to n*m do  {повторяем сколько элементов в матрице}
  30. for i:=1 to m do
  31. for j:=1 to n do
  32.    begin
  33.     if j<>n then {если элемент в строке не последний}
  34.      begin
  35.       if a[i,j+1]<a[i,j] then
  36.         begin
  37.          tmp:=a[i,j+1];
  38.          a[i,j+1]:=a[i,j];
  39.          a[i,j]:=tmp;{обмен элементов}
  40.         end;
  41.      end
  42.     else
  43.       if (a[i+1,1]<a[i,j])and(i<>m)then {если строка не последняя}
  44.      {меняем первый элемент в следущей строке с последним элементом в текущей строке}
  45.         begin
  46.          tmp:=a[i+1,1];
  47.          a[i+1,1]:=a[i,j];
  48.          a[i,j]:=tmp;
  49.        end;
  50.    end;
  51. writeln('Отсортированная матрица:');
  52. for i:=1 to m do
  53.  begin
  54.   for j:=1 to n do
  55.   write(a[i,j]:4);
  56.   writeln;
  57.  end;
  58. readln
  59. end.
Поделиться:

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