С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

04.10.2013, 11:24. Просмотров 647. Ответов 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])
                {
                    // тут должна быть сортировка
                }
            }
        }   
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.10.2013, 11:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировка матрицы по последнему элементу строки (C++):

Сортировка матрицы по последнему столбцу - C++
Нужно отсортировать матрицу по последнему столбцу. То есть в зависимости сортировки последнего столбца отсортировать всю матрицу. Я...

Обращение к последнему элементу вектора - C++
Здравствуйте, мне нужно сравнить последний элемент вектора с числом и в зависимости от того, какое это число, выполнить дальнейшие...

Количество чисел массива равных последнему элементу - C++
Здравствуйте! Помогите мне пожалуйста с задачкой) Дан массив и n целых чисел (n&lt;=100). Найти количество чисел массива равных...

Рассортировать строки динамической матрицы по наибольшему элементу строки. - C++
Рассортировать строки динамической матрицы по наибольшему элементу строки. Как это?я не понимаю как надо сортировать?находим...

Как обратиться к первому и последнему элементу в строчке в двумерном массиве - C++
День Добрый. Не могу понять как обратиться к первому и последнему элементу в строчке в двумерном массиве содержащем n-строк m-столбцов...

Каждый элемент строки матрицы представить как приращение по отношению к минимальному элементу этой же строки - C++
Задание Каждый элемент строки прямоугольной матрицы представить как приращение по отношению к минимальному элементу этой же строки....

6
dzrkot
zzzZZZ...
523 / 353 / 54
Регистрация: 11.09.2013
Сообщений: 2,036
04.10.2013, 13:56 #2
напиши мне на более тупом языке что значит "порядке возрастания их последних элементов" , а то у меня мозг не переваривает честно говоря)
0
HedgehogLu
147 / 68 / 1
Регистрация: 04.09.2013
Сообщений: 260
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 минуты
Или можно покопать тут:Алгоритмы сортировок с кодом

(Да они для одномерных массивов. Но вы то и сравниваете элементы последнего столбца. Что и есть по сути одномерный массив.
Тока копировать придется не один элемент а всю строку)
0
Votming
0 / 0 / 0
Регистрация: 22.09.2013
Сообщений: 17
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
0
dzrkot
zzzZZZ...
523 / 353 / 54
Регистрация: 11.09.2013
Сообщений: 2,036
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
аа...так слушай это не трудно тогда) щас с работы ухожу, не успею написать)
0
HedgehogLu
147 / 68 / 1
Регистрация: 04.09.2013
Сообщений: 260
04.10.2013, 17:38 #6
Ну как успехи с кодом?
Читали раздел с сортировками?
0
Votming
0 / 0 / 0
Регистрация: 22.09.2013
Сообщений: 17
04.10.2013, 20:40  [ТС] #7
Цитата Сообщение от HedgehogLu Посмотреть сообщение
Ну как успехи с кодом?
Читали раздел с сортировками?
Ну почитал, вроде бы понятно. Попробую завтра реализовать. Спасибо за советы!
0
04.10.2013, 20:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.10.2013, 20:40
Привет! Вот еще темы с ответами:

Сортировка по последнему символу строк - C++
Здравствуйте. Подскажите пожалуйста,как с помощью указателя, можно отсортировать строки по последнему символу? Пока есть сортировка по...

Пузырьковая сортировка от первого шага к последнему - C++
#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; using namespace std; void sort_bubble(int* a, int n){ int s = 0; ...

Stable_sort сортировка вектора по последнему символу - C++
Доброе время суток! Очень срочно помогите плз! void setText() { string number; FILE *file; char* file_name = &quot;file.txt&quot;; ...

Получить массив B, присвоив его k-му элементу 1, если элементы k-й строки матрицы упорядочены по убыванию - C++
Задана матрица размером NxM. Получить массив B, присвоив его k-му элементу значение 1, если элементы k-й строки матрицы упорядочены по...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.