Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2010, 20:47   #1
m9yt
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 108
По умолчанию Сортировка матрицы

Привет всем!
Прошу помощи в непростой, на мой взгляд, задаче.
Заранее скажу, что код - не самое важное. Главное - это алгоритм, хочу разобраться как именно вначале делать, а потом уже кодить.
А задача следующая:
Дана квадратная матрица. Упорядочить строки матрицы по убыванию элементов ее главной диагонали.
Еще раз повторюсь, для меня тут сложен механизм работы с индексами.
Заранее спасибо.
m9yt вне форума Ответить с цитированием
Старый 22.06.2010, 21:01   #2
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

Имеется ввиду что за строки нужно принять линии, параллельные главной диагонали матрицы?
___________________
Возникла новая теория:
Упорядочить матрицу таким образом: элементы, находящиеся слева главной диагонали - сортировать от большего к меньшему, а элементы находящиеся справа от главной диагонали - сортировать от меньшего к большему

Или я чего-то не понимаю?
Искусственный интеллект - фигня по сравнению с естественной глупостью

Последний раз редактировалось Impuls1989; 22.06.2010 в 21:07.
Impuls1989 вне форума Ответить с цитированием
Старый 22.06.2010, 21:20   #3
m9yt
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 108
По умолчанию

Имеется ввиду:
было
1 2 3 4
6 7 8 9
2 3 4 5
7 8 9 0

стало
6 7 8 9
2 3 4 5
1 2 3 4
7 8 9 0
m9yt вне форума Ответить с цитированием
Старый 22.06.2010, 21:46   #4
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

Ну так в чем проблема?
Предположим у Вас есть матрица a[n][n], которую нужно отсортировать
1. создаем массив b[2][n]
2. Закидываем в массив b[0][i] значения вашей матрицы
3. Закидываем в массив b[1][i] значение i
4. Сортируем массив b по нулевой строке (при перестановке элементов, переставлять элементы и нулевой и первой строки: Swap(b[0][i], b[0][k]); Swap(b[1][i], b[1][k]), где Swap - меняет два элемента местами
Собственно все. После сортировки, в b[1][i] , будет находится нужная вам последовательность строк. Останется только переставить строки массива a в соответствии с b[1][i]

Можно уменьшить головную боль с массивом на 2 строки, создав структуру данных:
Код:
typedef struct Element{
    int element;
    int row;
} Element
где в поле element - заносится значение элемента
в поле row - заносится номер строки.
Надеюсь понятно объяснил
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка матрицы Dartchuwak Помощь студентам 4 06.04.2010 15:49
Сортировка матрицы Eovin Помощь студентам 0 20.12.2009 15:36
Матрицы. Сортировка Ominous48 Паскаль, Turbo Pascal, PascalABC.NET 5 18.05.2009 11:51