Быстрая сортировка матрицы - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста, необходимо отсортировать в матрице строки по возрастанию элементов в первом столбце методом быстрой сортировки

Решение задачи: «Быстрая сортировка матрицы»

textual
Листинг программы
  1. const nmax=10;
  2. type mas=array[1..nmax] of integer;
  3.      mtr=array[1..nmax] of mas;
  4. procedure sort(l,r:integer;var a:mtr);
  5. var i,j,x,m:integer;
  6.     t:mas;
  7. begin
  8. i:=l;
  9. j:=r;
  10. m:=(l+r)div 2;
  11. x:=a[m][1];
  12. repeat
  13. while a[i][1]<x do inc(i);
  14. while a[j][1]>x do dec(j);
  15. if i<=j then
  16.  begin
  17.   t:=a[i];
  18.   a[i]:=a[j];{меняем строки}
  19.   a[j]:=t;
  20.   inc(i);
  21.   dec(j);
  22.  end;
  23. until i>j;
  24. if l<j then sort(l,j,a);
  25. if i<r then sort(i,r,a);
  26. end;
  27.  
  28. var a:mtr;
  29.     m,n,i,j:byte;
  30. begin
  31. randomize;
  32. repeat
  33. write('Количество строк до ',nmax,' m=');
  34. readln(m);
  35. until m in [1..nmax];
  36. repeat
  37. write('Количество столбцов до ',nmax,' n=');
  38. readln(n);
  39. until n in [1..nmax];
  40. writeln('Исходная матрица:');
  41. for i:=1 to m do
  42.  begin
  43.   for j:=1 to n do
  44.    begin
  45.     a[i][j]:=random(20);
  46.     write(a[i][j]:4);
  47.    end;
  48.   writeln;
  49.  end;
  50. sort(1,m,a);
  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. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы