Быстрая сортировка матрицы - Pascal ABC
Формулировка задачи:
Помогите пожалуйста, необходимо отсортировать в матрице строки по возрастанию элементов в первом столбце методом быстрой сортировки
Решение задачи: «Быстрая сортировка матрицы»
textual
Листинг программы
const nmax=10; type mas=array[1..nmax] of integer; mtr=array[1..nmax] of mas; procedure sort(l,r:integer;var a:mtr); var i,j,x,m:integer; t:mas; begin i:=l; j:=r; m:=(l+r)div 2; x:=a[m][1]; repeat while a[i][1]<x do inc(i); while a[j][1]>x do dec(j); if i<=j then begin t:=a[i]; a[i]:=a[j];{меняем строки} a[j]:=t; inc(i); dec(j); end; until i>j; if l<j then sort(l,j,a); if i<r then sort(i,r,a); end; var a:mtr; m,n,i,j:byte; begin randomize; repeat write('Количество строк до ',nmax,' m='); readln(m); until m in [1..nmax]; repeat write('Количество столбцов до ',nmax,' n='); readln(n); until n in [1..nmax]; writeln('Исходная матрица:'); for i:=1 to m do begin for j:=1 to n do begin a[i][j]:=random(20); write(a[i][j]:4); end; writeln; end; sort(1,m,a); writeln('Отсортированная матрица:'); for i:=1 to m do begin for j:=1 to n do write(a[i][j]:4); writeln; end; end.
Объяснение кода листинга программы
- const nmax=10; - задает максимальное количество строк и столбцов в матрице
- type mas=array[1..nmax] of integer; - определяет тип массива mas, который содержит целые числа
- procedure sort(l,r:integer;var a:mtr); - определяет процедуру сортировки матрицы
- var i,j,x,m:integer; - определяет переменные для индексов и временную переменную для разделения матрицы
- t:mas; - определяет временный массив t для обмена элементов
- repeat
- write('Количество строк до ',nmax,' m='); - выводит сообщение о количестве строк
- readln(m); - читает введенное значение
- repeat
- write('Количество столбцов до ',nmax,' n='); - выводит сообщение о количестве столбцов
- readln(n); - читает введенное значение
- until n in [1..nmax]; - повторяет чтение до тех пор, пока n не будет в пределах от 1 до nmax
- writeln('Исходная матрица:'); - выводит исходную матрицу
- for i:=1 to m do
- begin
- for j:=1 to n do
- begin
- a[i][j]:=random(20); - присваивает случайное число каждой ячейке матрицы
- write(a[i][j]:4); - выводит число на экран
- end;
- writeln; - перенос строки
- end;
- sort(1,m,a); - сортирует матрицу
- writeln('Отсортированная матрица:'); - выводит отсортированную матрицу
- for i:=1 to m do
- begin
- for j:=1 to n do
- write(a[i][j]:4); - выводит число на экран
- writeln; - перенос строки
- end;
- end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д