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

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

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

> Сортировка матрицы, помогите пжлста
kaktus
сообщение 13.11.2008 7:53
Сообщение #1





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

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


НУжно отсортировать выделенные элементы произвольной матрицы по возрастанию(обозначены y)
y y y y y
y x x x y
y x x x y
y x x x y
y x x x y
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 4)
Lapp
сообщение 13.11.2008 10:41
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(kaktus @ 13.11.2008 7:53) *
выделенные элементы произвольной матрицы
В каком направлении обходить?


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
kaktus
сообщение 13.11.2008 16:07
Сообщение #3





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

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


по часовой стрелке!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
samec
сообщение 13.11.2008 19:52
Сообщение #4


Бывалый
***

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

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


Как вариант: считать в одномерный массив размерностью (N+N+M-2), (это если матрица размерностью (N*M)). Отсортировать этот одномерный массив любым методом сортировки -> записать на место отсортированный массив.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 13.11.2008 20:02
Сообщение #5


Гость






Элементарно делается без доп. массива: берем любой метод сортировки, который работает с двумя соседними ячейками. К примеру, "пузырек" (кто-то говорит, что "пузырек" - это отстой, и непонятно зачем нужен? А вот нужен smile.gif Во избежание написания десятиэтажных кодов), и:

...
count := 2 * n + (m - 2);
for i := 1 to count do begin
ii := n; jj := m; pass := 1;
for j := count downto i + 1 do begin

ii_pred := ii; jj_pred := jj;
case pass of
1: begin dec(ii_pred); if ii_pred = 1 then pass := 2; end;
2: begin dec(jj_pred); if jj_pred = 1 then pass := 3; end;
3: begin inc(ii_pred); if ii_pred = n then pass := 4; end;
end;

if a[ii_pred, jj_pred] > a[ii, jj] then begin
T := a[ii_pred, jj_pred];
a[ii_pred, jj_pred] := a[ii, jj];
a[ii, jj] := T;
end;
ii := ii_pred; jj := jj_pred;

end;
end;
...
N - число строк матрицы, M - число столбцов...
 К началу страницы 
+ Ответить 

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

 



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