Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Votming
0 / 0 / 0
Регистрация: 22.09.2013
Сообщений: 16
#1

Сортировка матрицы по последнему элементу строки - C++

04.10.2013, 11:24. Просмотров 530. Ответов 6
Метки нет (Все метки)

Всем привет.
Задача: Нужно упорядочить строки матрицы в порядке возрастания их последних элементов. Вся программа почти готова, но функция сортировки у меня никак не работает. Вроде как эта функция, которую я написал ниже может сравнивать последние элементы массива, но я не могу написать алгоритм упорядочивания. Помогите, пожалуйста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void Sort(int col,int col2)
{
    int razm = 0;
    for (int k = 1; k < col; k++)
    {
        for (int i = col2-1; i < col2; i++)
        {
            for (int j =col2-1 ; j <col2; j++)
            {
                if (array[k][j] < array[k-1][j])
                {
                    // тут должна быть сортировка
                }
            }
        }   
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.10.2013, 11:24     Сортировка матрицы по последнему элементу строки
Посмотрите здесь:

C++ Рассортировать строки динамической матрицы по наибольшему элементу строки.
Как обратиться к первому и последнему элементу в строчке в двумерном массиве C++
Сортировка матрицы по последнему столбцу C++
C++ Stable_sort сортировка вектора по последнему символу
Количество чисел массива равных последнему элементу C++
C++ Сортировка строки матрицы
Сортировка строки матрицы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dzrkot
zzzZZZ...
518 / 348 / 53
Регистрация: 11.09.2013
Сообщений: 1,994
04.10.2013, 13:56     Сортировка матрицы по последнему элементу строки #2
напиши мне на более тупом языке что значит "порядке возрастания их последних элементов" , а то у меня мозг не переваривает честно говоря)
HedgehogLu
147 / 68 / 1
Регистрация: 04.09.2013
Сообщений: 254
04.10.2013, 14:25     Сортировка матрицы по последнему элементу строки #3
Цитата Сообщение от Votming Посмотреть сообщение
for (int k = 1; k < col; k++) { for (int i = col2-1; i < col2; i++) { for (int j =col2-1 ; j <col2; j++) { if (array[k][j] < array[k-1][j]) { // тут должна быть сортировка } } } }
Боже зачем так сложно
Вам последующие циклы не нужны, т.к. они все одно возвращают последние элементы.

В принципе как сортировать не важно можно воспользоваться любым методом, поиска минимума или максимума и перестановка элементов, делением пополам или например пузырьковым методом сортировки.
Таким образом вам надо будет несколько вложенных циклов
1 перебор строк которых сравниваем (он уже у вас есть)
2 цикл выполняется до тех пор пока последний элемент анализируемой строки меньше (или больше в зависимости он направления сортировки) предыдущей и пока есть эта предыдущая строка. Обмениваем местами все элементы этих строк (3 цикл по столбцам например). И пытаемся опустить строку дальше
готово.

Добавлено через 2 минуты
Или можно покопать тут:Алгоритмы сортировок с кодом

(Да они для одномерных массивов. Но вы то и сравниваете элементы последнего столбца. Что и есть по сути одномерный массив.
Тока копировать придется не один элемент а всю строку)
Votming
0 / 0 / 0
Регистрация: 22.09.2013
Сообщений: 16
04.10.2013, 16:49  [ТС]     Сортировка матрицы по последнему элементу строки #4
Цитата Сообщение от dzrkot Посмотреть сообщение
напиши мне на более тупом языке что значит "порядке возрастания их последних элементов" , а то у меня мозг не переваривает честно говоря)
Ну на сколько я понял, мы сравниваем последний элемент каждой строки матрицы(двумерного массива) и сортируем все строки в порядке возрастания этих элементов. Т.е.

массив
1 2 3 8
2 6 3 2 -> отстортируется вот так ->
4 3 2 5


2 6 3 2
4 3 2 5 т.к. 2<5<8
1 2 3 8
dzrkot
zzzZZZ...
518 / 348 / 53
Регистрация: 11.09.2013
Сообщений: 1,994
04.10.2013, 17:04     Сортировка матрицы по последнему элементу строки #5
Цитата Сообщение от Votming Посмотреть сообщение
Ну на сколько я понял, мы сравниваем последний элемент каждой строки матрицы(двумерного массива) и сортируем все строки в порядке возрастания этих элементов. Т.е.

массив
1 2 3 8
2 6 3 2 -> отстортируется вот так ->
4 3 2 5


2 6 3 2
4 3 2 5 т.к. 2<5<8
1 2 3 8
аа...так слушай это не трудно тогда) щас с работы ухожу, не успею написать)
HedgehogLu
147 / 68 / 1
Регистрация: 04.09.2013
Сообщений: 254
04.10.2013, 17:38     Сортировка матрицы по последнему элементу строки #6
Ну как успехи с кодом?
Читали раздел с сортировками?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.10.2013, 20:40     Сортировка матрицы по последнему элементу строки
Еще ссылки по теме:

C++ Пузырьковая сортировка от первого шага к последнему
C++ Каждый элемент строки матрицы представить как приращение по отношению к минимальному элементу этой же строки
Получить массив B, присвоив его k-му элементу 1, если элементы k-й строки матрицы упорядочены по убыванию C++
C++ Сортировка по последнему символу строк
C++ Обращение к последнему элементу вектора

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Votming
0 / 0 / 0
Регистрация: 22.09.2013
Сообщений: 16
04.10.2013, 20:40  [ТС]     Сортировка матрицы по последнему элементу строки #7
Цитата Сообщение от HedgehogLu Посмотреть сообщение
Ну как успехи с кодом?
Читали раздел с сортировками?
Ну почитал, вроде бы понятно. Попробую завтра реализовать. Спасибо за советы!
Yandex
Объявления
04.10.2013, 20:40     Сортировка матрицы по последнему элементу строки
Ответ Создать тему
Опции темы

Текущее время: 02:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru