c语言qsort二维数组排序
时间: 2023-07-28 07:23:19 浏览: 200
要使用qsort函数对二维数组进行排序,需要先定义一个比较函数,然后将二维数组作为参数传递给qsort函数。比较函数需要返回一个整数值,表示两个元素的大小关系,如果返回值小于0,则表示第一个元素应该排在第二个元素之前,如果返回值大于0,则表示第二个元素应该排在第一个元素之前,如果返回值等于0,则表示两个元素相等,排序时可以按照任意一维来排序。
以下是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define ROWS 3
#define COLS 4
int compare(const void *a, const void *b) {
const int *ia = *(const int **)a;
const int *ib = *(const int **)b;
return ia[0] - ib[0];
}
int main() {
int arr[ROWS][COLS] = {{3, 2, 1, 4},
{6, 5, 8, 7},
{9, 11, 10, 12}};
int *p[ROWS];
int i, j;
for (i = 0; i < ROWS; i++) {
p[i] = arr[i];
}
qsort(p, ROWS, sizeof(p[0]), compare);
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
printf("%d ", p[i][j]);
}
printf("\n");
}
return 0;
}
```
这段代码会按照二维数组的第一列进行升序排序,并输出排序后的二维数组。
阅读全文