一个二维数组,是可以用sort进行排序的,可以选择根据某一列来进行排序,如果不重写cmp函数,那么默认的是根据第一列来排序,当然我们可以通过重写来根据其他列来排序:

 

/* Input matrix
m = [
        1 4 2 
        0 8 3
        3 5 1
    ]
*/

// 按第一列升序排(默认)
sort(m.begin(), m.end());
/*
m = [
        0 8 3
        1 4 2 
        3 5 1
    ]
*/

// 按第一列降序排列
sort(m.rbegin(), m.rend());
/*
m = [
        3 5 1
        1 4 2 
        0 8 3
    ]
*/


// 按第二列升序排列
sort(m.begin(), m.end(), [](const vector<int> &a, const vector<int> &b) { return a[1] < b[1]; } );

bool cmp(const vector<int> &a, const vector<int> &b) {
    return a[1] < b[1];
}
sort(m.begin(), m.end(), cmp);
/*
m = [
        1 4 2 
        3 5 1
        0 8 3
    ]
*/


// 按第二列降序排列
sort(m.begin(), m.end(), [](const vector<int> &a, const vector<int> &b) { return a[1] > b[1]; } );

bool cmp(const vector<int> &a, const vector<int> &b) {
    return a[1] > b[1];
}
sort(m.begin(), m.end(), cmp);
/*
m = [
        0 8 3
        3 5 1
        1 4 2 
    ]
*/

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐