c++二维数组自定义sort
时间: 2023-09-16 14:06:29 浏览: 59
可以使用STL中的sort函数来对二维数组进行排序,需要自定义比较函数。
假设有一个二维数组arr,其中每个元素都是一个长度为2的数组,可以先定义一个比较函数cmp:
```c++
bool cmp(int a[], int b[]) {
return a[0] < b[0]; // 按照第一列升序排序
}
```
然后可以使用sort函数进行排序:
```c++
sort(arr, arr + n, cmp); // n为数组长度
```
完整示例:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
bool cmp(int a[], int b[]) {
return a[0] < b[0]; // 按照第一列升序排序
}
int main() {
int arr[3][2] = {{3, 1}, {1, 2}, {2, 3}};
sort(arr, arr + 3, cmp);
for (int i = 0; i < 3; i++) {
cout << arr[i][0] << " " << arr[i][1] << endl;
}
return 0;
}
```
输出结果:
```
1 2
2 3
3 1
```
相关问题
c++sort排序二维数组
C++中可以使用sort函数对二维数组进行排序,需要注意的是,sort函数只能对一维数组进行排序,因此需要将二维数组转化为一维数组进行排序。可以使用指针或者vector来实现。其中,指针的实现方式如下所示:
对于升序排序,可以使用以下代码:
int a[n][m] = {0}; //定义二维数组
sort(&a, &a + n * m); //将二维数组转化为一维数组进行排序
对于降序排序,可以使用以下代码:
int a[n][m] = {0}; //定义二维数组
sort(&a, &a + n * m, greater<int>()); //将二维数组转化为一维数组进行排序,使用greater<int>()实现降序排序
另外,对于vector的实现方式,可以参考上述提供的代码范例。需要注意的是,对于二维vector的排序,需要自定义排序规则,可以使用lambda表达式来实现。
c++二维数组按大小排序
可以使用STL中的sort函数,结合自定义的比较函数,来对二维数组进行排序。以下是一个示例代码:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
bool cmp(int *a, int *b) {
return a[0] < b[0];
}
int main() {
int arr[5][2] = {{3, 5}, {1, 2}, {6, 4}, {2, 4}, {5, 1}};
sort(arr, arr+5, cmp);
for(int i=0; i<5; i++) {
cout << arr[i][0] << " " << arr[i][1] << endl;
}
return 0;
}
```
上述代码中,cmp函数用于比较二维数组的第一列元素的大小,sort函数默认按照小于号(<)进行排序,因此可以直接传入该自定义比较函数。最后输出排好序的二维数组即可。