Сортировка матрицы по возрастанию
Категория: Delphi/Pascal
2011-09-01 22:33:14
Задан двухмерный массив A(a_ij), де i=1,2…n , j=1,2…m, элементами которого являются целые числа. Упорядочить информацию в массиве в порядке возрастания.
Указания:
- Изначальный массив задать самостоятельно.
- На экран вывести начальный и полученный массивы.
code: #pascal
- uses crt;
- var a:array[1..50,1..50] of integer;{матрица}
- m,n,i,j,k,tmp:integer; {размеры матрицы,счетчики циклов, буфер для обмена}
- begin
- clrscr;
- randomize;
- writeln('Введите размеры матрицы:');
- write(' Количество строк m=');
- repeat
- readln(m);
- until m in [1..50];
- write(' Количество столбцов n=');
- repeat
- readln(n);
- until n in [1..50];
- writeln;
- writeln('Исходная матрица:');
- for i:=1 to m do
- begin
- for j:=1 to n do
- begin
- a[i,j]:=random(100);{заполним матрицу случайными числами в инт[0,99]}
- write(a[i,j]:4);
- end;
- writeln;
- end;
- writeln;
- {сортировка матрицы пузырьком}
- for k:=1 to n*m do {повторяем сколько элементов в матрице}
- for i:=1 to m do
- for j:=1 to n do
- begin
- if j<>n then {если элемент в строке не последний}
- begin
- if a[i,j+1]<a[i,j] then
- begin
- tmp:=a[i,j+1];
- a[i,j+1]:=a[i,j];
- a[i,j]:=tmp;{обмен элементов}
- end;
- end
- else
- if (a[i+1,1]<a[i,j])and(i<>m)then {если строка не последняя}
- {меняем первый элемент в следущей строке с последним элементом в текущей строке}
- begin
- tmp:=a[i+1,1];
- a[i+1,1]:=a[i,j];
- a[i,j]:=tmp;
- end;
- end;
- writeln('Отсортированная матрица:');
- for i:=1 to m do
- begin
- for j:=1 to n do
- write(a[i,j]:4);
- writeln;
- end;
- readln
- end.
Поделиться: