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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.96
VladSharikov
 Аватар для VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
05.12.2011, 06:36     Сортировка матрицы по строке/столбцу #1
Как отсортировать матрицу по n строке?
Нужно отсортировать матрицу, например по 2 столбцу. То есть упорядочить элементы 2 столбца, а вместе с ними и строки, которым они принадлежат.
Например по второй?

Способ сортировки желательно пузырьком.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2011, 06:36     Сортировка матрицы по строке/столбцу
Посмотрите здесь:

C++ В каждой строке матрицы найти и вывести минимальный элемент и его номер в строке
C++ [C++] Дана квадратная матрица. Найти минор по заданной строке и столбцу
Сортировка матрицы по последнему столбцу C++
Матрицы. Получить вектор X, равный P-й строке матрицы, и вектор Y, равный Q-му столбцу матрицы C++
C++ Сортировка по первому столбцу!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NNN777
299 / 157 / 19
Регистрация: 27.02.2010
Сообщений: 317
05.12.2011, 10:48     Сортировка матрицы по строке/столбцу #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
33
34
#include <iostream>
 
int main()
{
    const int n = 5;
    int array[n][n] = {{1,2,1,2,5},{4,5,10,2,9},{4,8,7,1,2},{7,4,2,2,5},{4,1,2,5,8}};
    for (int i = 0; i < n; i++){
        for (int j = 0; j < n; j++){
            std::cout<<array[i][j]<<"\t";
        } std::cout<<std::endl;
    }
    int j = 0;
    std::cout<<"enter j: ";
    std::cin>>j;
    for (int i = 0; i < n; i++){
        for (int z = 0; z < n-i; z++){
            if (array[z][j] > array[z+1][j]){
                for (int k = 0; k < n; k++){
                    int buf = array[z][k];
                    array[z][k] = array[z+1][k];
                    array[z+1][k] = buf;
                }
            }
        }
    }
 
    for (int i = 0; i < n; i++){
        for (int j = 0; j < n; j++){
            std::cout<<array[i][j]<<"\t";
        } std::cout<<std::endl;
    }
 
    return 0;
}
VladSharikov
 Аватар для VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
06.12.2011, 04:37  [ТС]     Сортировка матрицы по строке/столбцу #3
Проще нельзя?

Добавлено через 16 секунд
C++
1
2
3
4
5
6
7
8
9
10
11
    for (int i = 0; i < n; i++){
        for (int z = 0; z < n-i; z++){
            if (array[z][j] > array[z+1][j]){
                for (int k = 0; k < n; k++){
                    int buf = array[z][k];
                    array[z][k] = array[z+1][k];
                    array[z+1][k] = buf;
                }
            }
        }
    }
мудрено слишком
SergioM
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 2
12.05.2013, 16:35     Сортировка матрицы по строке/столбцу #4
NNN777, спасибо большое за код. Нужен был такой алгоритм для JS. Переделал на Java Script. Только вот пока этот алгоритм тестировал у себя, выявил ошибочку: если встречаются одинаковые элементы в столбце, то они не сортируются как надо.
Yandex
Объявления
12.05.2013, 16:35     Сортировка матрицы по строке/столбцу
Ответ Создать тему
Опции темы

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