c++二维数组自定义sort
时间: 2023-09-16 07:06:35 浏览: 80
C++将数字从键盘读入数组并统计数字出现的次数,元素从大到小的顺序排序
如果你想对一个二维数组进行排序,可以使用自定义的比较函数来实现。以下是一个示例代码,可以按照二维数组的第一列进行升序排序:
```c
#include <stdio.h>
#include <stdlib.h>
// 自定义的比较函数
int cmp(const void* a, const void* b) {
int* pa = (int*)a;
int* pb = (int*)b;
return pa[0] - pb[0];
}
int main() {
int arr[][2] = {{3, 1}, {1, 2}, {2, 3}, {4, 0}};
int len = sizeof(arr) / sizeof(arr[0]);
// 使用自定义的比较函数进行排序
qsort(arr, len, sizeof(arr[0]), cmp);
// 输出排序后的结果
for (int i = 0; i < len; i++) {
printf("%d %d\n", arr[i][0], arr[i][1]);
}
return 0;
}
```
在这个示例中,我们定义了一个二维数组 `arr`,然后使用 `qsort` 函数来对其进行排序。`qsort` 函数需要传入四个参数:待排序数组的指针、数组中元素的个数、每个元素的大小、以及一个函数指针,这个函数指针指向一个比较函数,用来比较数组中的元素大小。
我们定义的比较函数 `cmp` 接收两个指针参数,这两个指针指向数组中的两个元素。在这个比较函数中,我们将这两个元素的第一列进行比较,返回它们的差值。如果这个差值为正数,就意味着第一个元素的第一列比第二个元素的第一列大,需要将它们交换位置。如果这个差值为负数,那么它们的位置已经是正确的,不需要交换。如果这个差值为零,那么它们的第一列相等,需要继续比较第二列。
最后,我们使用一个循环将排序后的结果输出。在这个示例中,输出的结果是:
```
1 2
2 3
3 1
4 0
```
阅读全文