Помощь - Поиск - Пользователи - Календарь
Полная версия: Сортировка двумерного массива методом вставки.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Ditaly
Всем доброго времени суток.
Нужна ваша помощь , самому написать не вышло ( только для одномерного массива ).

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

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

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


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

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

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


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

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

А ты что сказал? ("Отсортировать нужно как двумерный массив, без "превращения" его в одномерный.")
Ditaly
Цитата(TarasBer @ 26.11.2010 11:56) *

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

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

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


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

P.S.: Все таки правильная постановка задачи, это половина решенной задачи.
volvo
Сортировка простой вставкой (немного измененная версия вот этого кода из FAQ: Методы сортировок)


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
Спасибо за помощь!
what are the risks of taking gab
Comprar Levitra En Zaragoza
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.