Сортировка двумерного массива - Free Pascal

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

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

Доброго времени суток. Помогите отсортировать двумерный массив таким образом. И сходный масссив 5 6 3 3 8 6 3 1 19 16 5 2 21 31 12 1 3 31 12 3 И начинаем сортировать по последнему столбцу, далее по третьему (предпоследнему), далее по второму, и далее по первому. Т.е. результатом должно стать: 8 6 3 1 21 31 12 1 19 16 5 2 5 6 3 3 3 31 12 3 Заранее благодарен за ответ.

Решение задачи: «Сортировка двумерного массива»

textual
Листинг программы
  1. type
  2.   TIntMatrix = array of array of Integer;
  3.   TCmpLineFunc = function(const m: TIntMatrix; i, j: Integer): Integer;
  4. procedure mSortLines(var m: TIntMatrix; Cmp: TCmpLineFunc);
  5. var
  6.   i, j: Integer;
  7.   t: array of Integer;
  8. begin
  9.   for i:=High(m) downto Low(m)+1 do
  10.     for j:=Low(m)+1 to i do
  11.       if Cmp(m,j-1,j)>0 then begin
  12.         t:=m[j-1]; m[j-1]:=m[j]; m[j]:=t;
  13.       end;
  14. end;
  15. function Cmp(const m: TIntMatrix; i, j: Integer): Integer;
  16. var k: Integer;
  17. begin
  18.   k:=High(m[0]); while (k>=Low(m[0])) and (m[i,k]=m[j,k]) do Dec(k);
  19.   if k<Low(m[0]) then Cmp:=0 else Cmp:=m[i,k]-m[j,k];
  20. end;
  21. procedure mWrite(const m: TIntMatrix; W: Integer);
  22. var i, j: Integer;
  23. begin
  24.   for i:=Low(m) to High(m) do begin
  25.     for j:=Low(m[i]) to High(m[i]) do Write(m[i,j]:W); WriteLn;
  26.   end;
  27. end;
  28. var
  29.   m, n, i, j: Integer;
  30.   a: TIntMatrix;
  31. begin
  32.   Randomize;
  33.   Write('Введите m и n: '); ReadLn(m,n);
  34.   SetLength(a,m,n);
  35.   for i:=Low(a) to High(a) do for j:=Low(a[i]) to High(a[i]) do
  36.     a[i,j]:=Random(100);
  37.   WriteLn('A='); mWrite(a,4);
  38.   mSortLines(a,@Cmp);
  39.   WriteLn('A''='); mWrite(a,4);
  40. end.

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

  1. Объявление типа данных TIntMatrix для двумерного массива целых чисел
  2. Объявление процедуры mSortLines для сортировки строк массива m, используя функцию сравнения Cmp
  3. Объявление функции Cmp для сравнения элементов массива m
  4. Объявление процедуры mWrite для вывода элементов массива m на экран
  5. Объявление переменных m, n, i, j, a для выполнения задачи
  6. Инициализация генератора случайных чисел
  7. Ввод размеров массива m и n с помощью функции ReadLn
  8. Создание двумерного массива a с помощью функции SetLength
  9. Заполнение массива a случайными числами с помощью цикла
  10. Вывод массива a на экран с помощью функции mWrite
  11. Сортировка строк массива a с помощью процедуры mSortLines
  12. Вывод отсортированного массива a на экран с помощью функции mWrite
  13. Конец программы

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


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

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

7   голосов , оценка 3.714 из 5

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

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

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