Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何按列对二维矩阵进行排序?_C++_Matrix_Vector - Fatal编程技术网

C++ 如何按列对二维矩阵进行排序?

C++ 如何按列对二维矩阵进行排序?,c++,matrix,vector,C++,Matrix,Vector,我有下面的代码,其中我对插入列中的每个元素的2d矩阵进行排序 例如: 5 4 2 4 1 3 9 8 7 6 20 19 18 16 30 29 124 12 59 21 0 3 我的第一种排序方法是: vector<vector<int>> w; vector<int> v; int n,m,x; cin >> n >> m; w.resize(n, vector<int>(m)); for(int i=1; i

我有下面的代码,其中我对插入列中的每个元素的2d矩阵进行排序

例如:

5 4 

2 4 1 3
9 8 7 6
20 19 18 16
30 29 124 12
59 21 0 3
我的第一种排序方法是:

vector<vector<int>> w;
vector<int> v;
int n,m,x;

cin >> n >> m;
w.resize(n, vector<int>(m));

for(int i=1; i <= n*m; i++)
    cin >> x,v.push_back(x);

sort(v.begin(), v.end());
int k=0;

for(int i=0; i < m; i++)
{
    for(int j=0;j<n;j++)
        w[j][i]=v[k++];
}

for(int i=0; i < n; i++)
{
    for(int j=0;j<m;j++)
        cout << w[i][j] << " ";
    cout << '\n';
}
向量w;
向量v;
int n,m,x;
cin>>n>>m;
w、 调整大小(n,向量(m));
对于(inti=1;i>x,v.push_-back(x);
排序(v.begin(),v.end());
int k=0;
for(int i=0;i对于(int j=0;j不需要二维向量,可以将一维向量显示为二维:

int n,m;
std::cin >> n >> m;
std::vector<int> v;
//v.reserve(n * m);
for (int i = 0; i != n * m; i++) {
    int x;
    std::cin >> x;
    v.push_back(x);
}
std::sort(v.begin(), v.end());
for (int i = 0; i < n; i++)
{
    for (int j = 0; j < m; j++)
        std::cout << v[j * n + i] << " ";
    std::cout << '\n';
}
intn,m;
标准:cin>>n>>m;
std::向量v;
//v、 储备(n*m);
对于(int i=0;i!=n*m;i++){
int x;
标准:cin>>x;
v、 推回(x);
}
排序(v.begin(),v.end());
对于(int i=0;istd::cout不需要2D向量,您可以将1D向量显示为2D:

int n,m;
std::cin >> n >> m;
std::vector<int> v;
//v.reserve(n * m);
for (int i = 0; i != n * m; i++) {
    int x;
    std::cin >> x;
    v.push_back(x);
}
std::sort(v.begin(), v.end());
for (int i = 0; i < n; i++)
{
    for (int j = 0; j < m; j++)
        std::cout << v[j * n + i] << " ";
    std::cout << '\n';
}
intn,m;
标准:cin>>n>>m;
std::向量v;
//v、 储备(n*m);
对于(int i=0;i!=n*m;i++){
int x;
标准:cin>>x;
v、 推回(x);
}
排序(v.begin(),v.end());
对于(int i=0;i我可没想过。谢谢。我没想过。谢谢
int n,m;
std::cin >> n >> m;
std::vector<int> v;
//v.reserve(n * m);
for (int i = 0; i != n * m; i++) {
    int x;
    std::cin >> x;
    v.push_back(x);
}
std::sort(v.begin(), v.end());
for (int i = 0; i < n; i++)
{
    for (int j = 0; j < m; j++)
        std::cout << v[j * n + i] << " ";
    std::cout << '\n';
}