c++二维数组排序sort
时间: 2023-09-16 21:08:17 浏览: 149
你可以使用C语言中的标准库函数`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[][3] = {{3, 2, 1}, {6, 5, 4}, {9, 8, 7}};
int numRows = sizeof(arr) / sizeof(arr[0]);
// 将二维数组的每个子数组转换为指针数组
int *ptrs[numRows];
for (int i = 0; i < numRows; i++) {
ptrs[i] = arr[i];
}
// 使用 qsort 函数对指针数组进行排序
qsort(ptrs, numRows, sizeof(int *), compare);
// 输出排序后的结果
for (int i = 0; i < numRows; i++) {
for (int j = 0; j < sizeof(arr[0]) / sizeof(arr[0][0]); j++) {
printf("%d ", ptrs[i][j]);
}
printf("\n");
}
return 0;
}
```
以上代码中,我们定义了一个二维数组`arr`,然后将每个子数组转换为指针数组`ptrs`,使用`qsort`函数对`ptrs`进行排序,排序的规则由`compare`函数指定。最后,输出排序后的结果。
请注意,这里假设二维数组的每个子数组都有相同的长度。如果子数组的长度不一致,你可能需要做一些额外的处理。
阅读全文