Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Сортировка двумерного массива методом вставки.

Автор: Ditaly 26.11.2010 1:22

Всем доброго времени суток.
Нужна ваша помощь , самому написать не вышло ( только для одномерного массива ).


Автор: volvo 26.11.2010 1:47

А какая разница?

Как именно нужно отсортировать матрицу? "Насквозь"? Так передавай ее как бестиповый Var-параметр, и сортируй как одномерный. Если нужно что-то другое - так объясни, как именно нужно отсортировать матрицу.

Автор: Ditaly 26.11.2010 1:57

Цитата
А какая разница?

Как именно нужно отсортировать матрицу? "Насквозь"? Так передавай ее как бестиповый Var-параметр, и сортируй как одномерный. Если нужно что-то другое - так объясни, как именно нужно отсортировать матрицу.


Спасибо за быстрый ответ.

Отсортировать нужно как двумерный массив, без "превращения" его в одномерный.

Автор: volvo 26.11.2010 3:24

Опять за свое... КАК отсортировать-то надо? Построчно? По столбцам? По какому критерию? По убыванию количества цифр в элементах? По сумме цифр? Хочешь, я тебе еще 20 критериев приведу?

Автор: Ditaly 26.11.2010 13:38

Просто отсортировать по возрастанию весь массив, к примеру:

До сортировки :
89 898 12
0 13 14
23 21 98


После сортировки:
0 12 13
14 21 23
89 98 898

Автор: TarasBer 26.11.2010 14:56

> После сортировки:
0 12 13
14 21 23
89 98 898

Так это и есть сортировка, как одномерный массив!

А ты что сказал? ("Отсортировать нужно как двумерный массив, без "превращения" его в одномерный.")

Автор: Ditaly 26.11.2010 15:08

Цитата(TarasBer @ 26.11.2010 11:56) *

> После сортировки:
0 12 13
14 21 23
89 98 898

Так это и есть сортировка, как одномерный массив!

А ты что сказал? ("Отсортировать нужно как двумерный массив, без "превращения" его в одномерный.")


Хм... ошибся, если можно скиньте исходник, сортировки, как одномерный массив.

P.S.: Все таки правильная постановка задачи, это половина решенной задачи.

Автор: volvo 26.11.2010 23:30

Сортировка простой вставкой (немного измененная версия вот этого кода из FAQ: http://forum.pascal.net.ru/index.php?s=&showtopic=3065&view=findpost&p=29784)


type
T = integer;

procedure Insert(var V; size: Integer);
var
Arr: array[1 .. MaxInt div SizeOf(T)] of T absolute V;
i, j: Integer;
Element: T;
begin
for i := 1 to size do
begin
Element := Arr[i];
j := Pred(i);
while (j > 0) and (Element < Arr[j]) do
begin
Arr[Succ(j)] := Arr[j]; Dec(j);
end;
Arr[Succ(j)] := Element;
end;
end;



А теперь, внимание. Передаем в эту же процедуру нашу матрицу:

сonst
m = 3; n = 3;
b: array[1 .. m, 1 .. n] of integer = (
(89, 898, 12),
( 0, 13, 14),
(23, 21, 98)
);

{ ... }
Insert(b, m * n);
{ ... }



Хоть двумерную, хоть трехмерную, какую хочешь, такую и передавай, процедура сортировки работает с "вытянутым в цепочку", строка за строкой, представлением.

Автор: Ditaly 26.11.2010 23:36

Спасибо за помощь!

Автор: what are the risks of taking gab 9.12.2021 18:31

Comprar Levitra En Zaragoza