Быстрая сортировка матрицы - 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.

Объяснение кода листинга программы

  1. const nmax=10; - задает максимальное количество строк и столбцов в матрице
  2. type mas=array[1..nmax] of integer; - определяет тип массива mas, который содержит целые числа
  3. procedure sort(l,r:integer;var a:mtr); - определяет процедуру сортировки матрицы
  4. var i,j,x,m:integer; - определяет переменные для индексов и временную переменную для разделения матрицы
  5. t:mas; - определяет временный массив t для обмена элементов
  6. repeat
  7. write('Количество строк до ',nmax,' m='); - выводит сообщение о количестве строк
  8. readln(m); - читает введенное значение
  9. repeat
  10. write('Количество столбцов до ',nmax,' n='); - выводит сообщение о количестве столбцов
  11. readln(n); - читает введенное значение
  12. until n in [1..nmax]; - повторяет чтение до тех пор, пока n не будет в пределах от 1 до nmax
  13. writeln('Исходная матрица:'); - выводит исходную матрицу
  14. for i:=1 to m do
  15. begin
  16. for j:=1 to n do
  17. begin
  18. a[i][j]:=random(20); - присваивает случайное число каждой ячейке матрицы
  19. write(a[i][j]:4); - выводит число на экран
  20. end;
  21. writeln; - перенос строки
  22. end;
  23. sort(1,m,a); - сортирует матрицу
  24. writeln('Отсортированная матрица:'); - выводит отсортированную матрицу
  25. for i:=1 to m do
  26. begin
  27. for j:=1 to n do
  28. write(a[i][j]:4); - выводит число на экран
  29. writeln; - перенос строки
  30. end;
  31. end.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.133 из 5
Похожие ответы