0 / 0 / 2
Регистрация: 17.08.2017
Сообщений: 118
1

Сортировка каждого столбца вектора

29.09.2017, 19:37. Показов 1522. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, у меня есть двумерный вектор, vector< vector<int> > arr
Как мне сортировать каждый столбец по возрастанию?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.09.2017, 19:37
Ответы с готовыми решениями:

Сортировка вектора по количеству единиц двочного представления каждого элемента
Здравствуйте, есть программа не могу найти в ней ошибку, выдает результат ошибки -1. Программа...

Вычесть из каждого столбца матрицы максимальный элемент для каждого столбца, и результат вывести в матрицу
Что нужно добавить , чтобы вычесть из каждого столбца матрицы максимальный элемент для каждого...

Определить для заданных векторов длину каждого вектора и найти номер самого длинного вектора
Создайте структуру Вектор с элементами x, y, z – декартовые координаты. Определить для M заданных...

Разделить элементы каждого столбца заданной матрицы на последний элемент столбца
Разделить элементы каждого столбца заданной матрицы на последний элемент столбца.

1
838 / 641 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
30.09.2017, 16:18 2
Лучший ответ Сообщение было отмечено DavidJarr как решение

Решение

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <iostream>
#include <vector>
#include <cstdlib>
typedef std::vector<std::vector<int> > matrix;
typedef std::vector<int>::size_type    vsize;
void m_merge(matrix& mat, vsize col, int* arr, vsize l, vsize m, vsize r);
void m_split(matrix& mat, vsize col, int* arr, vsize l, vsize r);
void msort(matrix& mat);
 
int main(void){
    vsize i, j;
 
    vsize N = 20, M = 7;
    matrix mat(N, std::vector<int>(M));
 
    for(i = 0; i < mat.size(); ++i){
        for(j = 0; j < mat[i].size(); ++j)
            mat[i][j] = 10 + rand() % 90;
    }
    msort(mat);
 
    for(i = 0; i < mat.size(); ++i){
        for(j = 0; j < mat[i].size(); ++j)
            std::cout << mat[i][j] << ' ';
        std::cout << std::endl;
    }
    std::cin.get();
    return 0;
}
 
//сортировка столбцов
void msort(matrix& mat){
    if(mat.size() <= 1)
        return;
 
    int* arr = new (std::nothrow) int[mat.size()];
    if(arr == NULL)
        return;
 
    const vsize cols = mat[0].size();
    const vsize rows = mat.size() - 1;
    for(vsize i = 0; i < cols; ++i)
        m_split(mat, i, arr, 0, rows);
    delete[] arr;
}
 
//слияние
void m_merge(matrix& mat, vsize col, int* arr, vsize l, vsize m, vsize r){
    vsize i = l, j = m + 1, p = l;
    while((i <= m) && (j <= r)){
        if(mat[i][col] < mat[j][col])
            arr[p++] = mat[i++][col];
        else
            arr[p++] = mat[j++][col];
    }
 
    while(i <= m)
        arr[p++] = mat[i++][col];
    while(j <= r)
        arr[p++] = mat[j++][col];
 
    for(p = l; p <= r; ++p)
        mat[p][col] = arr[p];
}
 
//разделитель
void m_split(matrix& mat, vsize col, int* arr, vsize l, vsize r){
    if(l < r){
        vsize m = l + ((r - l) >> 1);
        m_split(mat, col, arr, l, m);
        m_split(mat, col, arr, m + 1, r);
        m_merge(mat, col, arr, l, m, r);
    }
}
0
30.09.2017, 16:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.09.2017, 16:18
Помогаю со студенческими работами здесь

Двумерные массивы. Разделить элементы каждого столбца на последний элемент столбца
Уважаемые, нужна помощь. Дано матрицу Т размером 6х5. Разделить элементы каждого столбца на...

В прямоугольной матрице заменить элементы каждого столбца на сумму элементов этого столбца
Решить задачу: в прямоугольной матрице заменить элементы каждого столбца на сумму элементов этого...

Массив: Разделить элементы каждого столбца заданной матрицы на последний элемент столбца.
Разделить элементы каждого столбца заданной матрицы на последний элемент столбца. Полученную...

Определить сумму элементов каждого столбца левой половины и сумму элементов каждого четного столбца правой половины матрицы A
Матрица A (M кратно 4) разделена по вертикали на две половины. Определить сумму элементов каждого...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru