Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
14 / 14 / 4
Регистрация: 26.12.2014
Сообщений: 196

Быстрая рекурсивная сортировка для матриц

09.04.2015, 08:58. Показов 973. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написал для массива.
Как организовать сортировку для матриц?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.04.2015, 08:58
Ответы с готовыми решениями:

Рекурсивная быстрая сортировка
Имеется код: procedure QSortRec(var _arr:TArr;min,max:integer); var i,j,mid,tmp:integer; begin mid:=arr; i:=min; j:=max; ...

Быстрая не рекурсивная сортировка
Много тем было про Быструю сортировку, но с рекурсией, а нужно без А как ее реализовать, даже не представляю.... Буду благодарен за...

Быстрая сортировка (сортировка Хоара) для связных списков
есть у кого готовый алгоритм? или подскажите как реализовать

3
Эксперт Pascal/Delphi
6812 / 4568 / 4820
Регистрация: 05.06.2014
Сообщений: 22,434
09.04.2015, 10:11
Как вариант, разверните матрицу в массив, отсортируйте и затем снова сверните в матрицу.
0
14 / 14 / 4
Регистрация: 26.12.2014
Сообщений: 196
09.04.2015, 10:14  [ТС]
Отсортировать элементы матрицы так, чтобы при прохождении по схеме, указанной в работе № 2 они были бы упорядочены по не убыванию.
При сортировке элементов матрицы не разрешается использовать дополнительные структуры данных (массивы), то есть вся сортировка должна производиться «на месте» – в исходном массиве. Кроме этого нужно сохранить временную сложность алгоритма сортировки: другими словами нельзя вводить дополнительных циклов (например, для вычисления координат) по сравнению с теми, что уже есть в сортировке.
Если была построена функция F в работе №2, тогда решить задачу в указанном ограничении не составит труда. А именно: алгоритм сортировки сортирует «как бы обычный» виртуальный линейный массив из N^2 элементов, но для каждого элемента с помощью функции F находят его реальные координаты в матрице.}
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
const n=4;
var
i,j,k,z,x,c:integer;
a:array[1..n, 1..n] of integer;
 
procedure return(k: integer; var i,j: integer);  
begin
case k of
  1:begin  i:=1;  j:=1; end;
  2:begin  i:=1;  j:=2; end;
  3:begin  i:=1;  j:=3; end;
  4:begin  i:=1;  j:=4; end;
  5:begin  i:=2;  j:=3; end;
  6:begin  i:=2;  j:=2; end;
  7:begin  i:=2;  j:=1; end;
  8:begin  i:=3;  j:=1; end;
  9:begin  i:=3;  j:=2; end;
  10:begin  i:=4;  j:=1; end;
  11:begin  i:=4;  j:=2; end;
  12:begin  i:=4;  j:=3; end;
  13:begin  i:=4;  j:=4; end;
  14:begin  i:=3;  j:=4; end;
  15:begin  i:=3;  j:=3; end;
  16:begin  i:=2;  j:=4; end;
 end;
    
end;
 
begin
  for k:=1 to n*n do 
  begin
    return(k,z,x);//заполнение 
    a[z,x]:=k;
  end;
  for i:=1 to n do
  begin
    for j:=1 to n do 
    begin
      write(a[i,j]:3);  //вывод
    end;
    writeln();
  end;
 
 
end.
Нужно отсортировать массив описанным выше способом

Добавлено через 1 минуту
Тут не все так просто
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8655 / 4491 / 1669
Регистрация: 01.02.2015
Сообщений: 13,900
Записей в блоге: 12
09.04.2015, 21:35
Цитата Сообщение от ZX Spectrum-128 Посмотреть сообщение
Как вариант, разверните матрицу в массив, отсортируйте и затем снова сверните в матрицу.
Обращение к псевдомассиву T[i] эквивалентно a[(i div MaxN)+1, (i mod MaxN)+1] - это такая замена return.
Вот пример, но в нём индексация от 0 до (MaxN-1).
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
program MatrixSort;
 
type
  TMatrix = array of array of integer;
 
  procedure SortMatrix(var a: TMatrix; m, n: integer);
  var
    i, j: integer;
    t: integer;
  begin
 
    for i := 0 to (m * n - 1) do
      for j := 0 to (m * n - 1) - i - 1 do
        if a[j div n, j mod n] > a[(j + 1) div n, (j + 1) mod n] then
        begin
          t := a[j div n, j mod n];
          a[j div n, j mod n] := a[(j + 1) div n, (j + 1) mod n];
          a[(j + 1) div n, (j + 1) mod n] := t;
        end;
  end;
 
var
  m, n: integer;
  i, j: integer;
  a: TMatrix;
begin
  {ввод размерности и заполнение матрицы}
  m := 2;
  n := 8;
  SetLength(a, m, n);
  for i := 0 to m - 1 do
    for j := 0 to n - 1 do
      a[i, j] := 10 * (m - i) + (n - j);
  {матрица до сортировки}
  writeln('Before:');
  for i := 0 to m - 1 do
  begin
    for j := 0 to n - 1 do
      Write(a[i, j]: 4);
    writeln;
  end;
  {вызов процедуры сортировки}
  SortMatrix(a, m, n);
  {матрица после сортировки}
  writeln('After');
  for i := 0 to m - 1 do
  begin
    for j := 0 to n - 1 do
      Write(a[i, j]: 4);
    writeln;
  end;
end.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.04.2015, 21:35
Помогаю со студенческими работами здесь

Быстрая сортировка для двумерного массива
Здравствуйте уважаемые, помогите пожалуйста, нужно сделать быструю сортировку для двумерного массива и вставить в код для сравнения с...

Не работает быстрая сортировка для двумерного массива
Здравствуйте, возникла проблема, не работает быстрая сортировка по возрастанию абсолютных величин для двумерного массива. Работает только,...

Быстрая сортировка (Хоара) для cell arrays
Задача: отсортировать методом Хоара заданный массив ячеек по заданным параметрам: 1. кол-во пятерок 2. кол-во четверок 3. ФИО ...

Разработать программу сортировки: сортировка перестановкой, сортировка вставкой, быстрая сортировка
Задание: Разработать программу сортировки: - сортировка перестановкой - сортировка вставкой - быстрая сортировка

Самая быстрая сортировка для мало отличающихся строк
Кто знает, как ее реализовать? Классическая быстрая сортировка (Хоара) для этого не подходит, потому что у нее много времени уходит на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru