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

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

Восстановить пароль Регистрация
 
VladSharikov
 Аватар для VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
15.12.2011, 19:45     Сортировка матрицы по последнему столбцу #1
Нужно отсортировать матрицу по последнему столбцу. То есть в зависимости сортировки последнего столбца отсортировать всю матрицу.

Я пытаюсь это сделать, но у меня не выходит. Не могли бы вы подсказать где у меня ошибка или подсказать какое-то другое решение.

Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void sort_matr(int **&matr, int line, int column) {
    int tmp = 0;
    for(int i = 0; i < line; i++) {
        for(int j = 0; j < column-i; j++) {
            if(matr[j][column] < matr[j+1][column]) {
                for(int k = 0; k < line-1; k++) {
                    int buf = matr[j][k];
                    matr[j][k] = matr[j][k+1];
                    matr[j][k+1] = buf;
                }
 
            }
        }
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2011, 19:45     Сортировка матрицы по последнему столбцу
Посмотрите здесь:

Сортировка матрицы по строке/столбцу C++
C++ Stable_sort сортировка вектора по последнему символу
Сортировка матрицы по последнему элементу строки C++
C++ Сортировка по первому столбцу!
C++ В прямоугольной матрице найти сумму элементов, принадлежащих первой строке, последней строке, первому столбцу и последнему столбцу.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
15.12.2011, 22:20     Сортировка матрицы по последнему столбцу #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
using namespace std;
 
int main(void) {
   const int rows = 4;
   const int cols = 3;
   int mat[rows][cols] = {
       { 4, 14, 24 },
       { 1, 11, 21 },
       { 3, 13, 23 },
       { 2, 12, 22 }
   };
 
   int next, col = cols - 1;
   do {
       next = 0;
       for(int r = 0; r < rows - 1; r++) {
           if(mat[r][col] > mat[r + 1][col]) {
                 for(int c = 0; c < cols; c++) 
                       swap(mat[r][c], mat[r + 1][c]);
                 next = 1;
           }
       }
   } while(next);
 
   for(int r = 0; r < rows; r++) {
        for(int c = 0; c < cols; c++)
             cout << mat[r][c] << "  ";
        cout.put('\n');
   }
   return 0;
}
VladSharikov
 Аватар для VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
15.12.2011, 23:17  [ТС]     Сортировка матрицы по последнему столбцу #3
спасибо

Добавлено через 54 секунды
но зачем внешний цикл do {} while(next);
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
15.12.2011, 23:40     Сортировка матрицы по последнему столбцу #4
VladSharikov, так это "пузырёк" ведь.
VladSharikov
 Аватар для VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
15.12.2011, 23:59  [ТС]     Сортировка матрицы по последнему столбцу #5
Почему то работает и без этого внешнего цикла =)
VladSharikov
 Аватар для VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
17.01.2012, 08:54  [ТС]     Сортировка матрицы по последнему столбцу #6
Понял =) Месяц понадобился
Yandex
Объявления
17.01.2012, 08:54     Сортировка матрицы по последнему столбцу
Ответ Создать тему
Опции темы

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