IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Сквозная сортировка, что такое сквозная сортировка
Серж
сообщение 18.04.2006 22:07
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


Есть ли какой-то алгоритм так называемой сквозной сортировки 2-мерного массива.
например:
2 4 8
5 2 3
3 7 1
в рез-те должно отсортировать так:
1 3 5
2 3 7
2 4 8
И разложение данного массива в одномерный, а потом сортировка его и опять запись в 2-мерный - не катит.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Merlin
сообщение 18.04.2006 22:55
Сообщение #2


Пионер
**

Группа: Пользователи
Сообщений: 114
Пол: Мужской
Реальное имя: Ден

Репутация: -  0  +


Серж Может нужно отсортировать каждую строку по возрастанию .

Сообщение отредактировано: Merlin - 18.04.2006 22:58


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 18.04.2006 23:06
Сообщение #3


Гость






Насколько видно из приведенного примера - матрица сортируется "по столбцам"...

Если "не катит" разложение массива в одномерный, и потом обратная запись в матрицу, можно предложить приведение типа матрицы к массиву (фактически никакого разложения не происходит, ты просто заставишь компилятор "под другим углом" посмотреть на матрицу), или придется шаманить с индексами - готовь большой бубен...
 К началу страницы 
+ Ответить 
Серж
сообщение 19.04.2006 16:47
Сообщение #4





Группа: Пользователи
Сообщений: 3
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


Цитата(volvo @ 18.04.2006 20:06) *

Если "не катит" разложение массива в одномерный, и потом обратная запись в матрицу, можно предложить приведение типа матрицы к массиву (фактически никакого разложения не происходит, ты просто заставишь компилятор "под другим углом" посмотреть на матрицу), или придется шаманить с индексами - готовь большой бубен...

A что понимается под приведением типа матрицы к массиву? И как это происходит?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 19.04.2006 17:58
Сообщение #5


Гость






Приведение матрицы к массиву - ты говоришь компилятору, что "на те данные, которые я раньше описал, как матрицу, в этом случае нужно смотреть, как на одномерный массив"... То есть, ФАКТИЧЕСКИ, никаких преобразований матрицы в одномерный массив не производится, ФИЗИЧЕСКИ ты работаешь с той же матрицей, так что, по-моему, приведенное тобой условие нигде не нарушается.

Как сделать? Ну, например, вот так:
const
size_x = 3;
size_y = 3;

type
column = array[1 .. size_y] of integer;
matrix = array[1 .. size_x] of column;

pvector = ^vector;
vector = array[1 .. maxInt div sizeof(integer)] of integer;

const
{ ВНИМАНИЕ: Заполнение матрицы - не построкам, а по столбцам !!! }
a: matrix = (
(2, 5, 3), { 1 столбец }
(4, 2, 7), { 2 столбец }
(8, 3, 1) { 3 столбец }
);

procedure print(const mx: matrix);
var i, j: integer;
begin
for i := 1 to size_x do begin
for j := 1 to size_y do
write(mx[j][i]:4);
writeln;
end;
end;

procedure bubble(var ar: vector; n: integer);
var i, j, T: Integer;
begin
for i := 1 to n do
for j := n downto i + 1 do
if ar[Pred(j)] > ar[j] then begin
T := ar[Pred(j)]; ar[Pred(j)] := ar[j]; ar[j] := T
end
end;

begin
writeln('before:');
print(a);

bubble(pvector(@a)^, size_x * size_y);

writeln('after:');
print(a);
end.
 К началу страницы 
+ Ответить 
Серж
сообщение 19.04.2006 18:18
Сообщение #6





Группа: Пользователи
Сообщений: 3
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


спасибо Volvo
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 2:54
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"