二维数组排序 c++
时间: 2023-07-20 16:11:03 浏览: 111
C++二维数组中的查找算法示例
C++ 中可以使用 `std::sort` 算法对二维数组进行排序,同样可以按照第一列排序,如果第一列相等则按照第二列排序。
以下是一个示例代码以升序排序为例:
```c++
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
bool cmp(vector<int>& a, vector<int>& b) {
if(a[0] == b[0]) return a[1] < b[1];
return a[0] < b[0];
}
vector<vector<int>> sort_2d_array(vector<vector<int>>& arr) {
sort(arr.begin(), arr.end(), cmp);
return arr;
}
int main() {
vector<vector<int>> arr{{3, 2}, {1, 4}, {2, 1}, {1, 3}};
vector<vector<int>> sorted_arr = sort_2d_array(arr);
for(auto& row : sorted_arr) {
for(auto& col : row) {
cout << col << " ";
}
cout << endl;
}
return 0;
}
```
其中,`arr`表示待排序的二维数组,`cmp`函数表示排序的比较函数,这里我们先按照第一列排序,如果第一列相等则按照第二列排序。如果要按照降序排序,只需将 `cmp` 函数改成:
```c++
bool cmp(vector<int>& a, vector<int>& b) {
if(a[0] == b[0]) return a[1] > b[1];
return a[0] > b[0];
}
```
输出结果为:
```
1 3
1 4
2 1
3 2
```
阅读全文