C语言用qsort 排序二维int数组,按二维数组的第一个元素大小排列
时间: 2024-04-11 13:26:41 浏览: 121
二维的qsort,根据其中任何一维进行快速排序
要使用 `qsort` 函数对二维整型数组按照第一个元素大小进行排序,你需要编写一个比较函数来指定排序的规则。下面是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 比较函数,按照第一个元素的大小进行排序
int compare(const void* a, const void* b) {
const int* arr1 = *(const int**)a;
const int* arr2 = *(const int**)b;
return arr1[0] - arr2[0];
}
int main() {
int arr[][2] = {{3, 1}, {1, 5}, {2, 2}, {5, 4}, {4, 3}};
int size = sizeof(arr) / sizeof(arr[0]);
// 使用 qsort 函数进行排序
qsort(arr, size, sizeof(arr[0]), compare);
// 打印排序后的结果
for (int i = 0; i < size; i++) {
printf("(%d, %d) ", arr[i][0], arr[i][1]);
}
return 0;
}
```
在上述代码中,我们定义了一个比较函数 `compare`,它接收两个指向二维整型数组的指针。我们通过将这些指针转换为 `const int**` 类型,然后比较第一个元素的大小来确定排序规则。然后,我们将该比较函数作为参数传递给 `qsort` 函数,对二维数组进行排序。
这里的 `arr` 是一个二维整型数组,每个子数组有两个元素。我们使用 `sizeof` 运算符计算二维数组的大小,并将其除以子数组大小,得到数组的长度。
以上代码输出结果为:`(1, 5) (2, 2) (3, 1) (4, 3) (5, 4)`,按照第一个元素从小到大的顺序进行了排序。
希望这个示例能够帮助到你!如果还有其他问题,请随时提问。
阅读全文