qsort+二维数组
时间: 2023-11-25 18:52:38 浏览: 73
二维的qsort,根据其中任何一维进行快速排序
以下是使用qsort函数对二维数组进行排序的C++代码示例:
```cpp
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
const int M = 4;
const int N = 3;
// 比较函数,用于qsort排序
int cmp(const void* a, const void* b) {
const int* pa = *(const int**)a;
const int* pb = *(const int**)b;
for (int i = 0; i < N; i++) {
if (pa[i] != pb[i]) {
return pa[i] - pb[i];
}
}
return 0;
}
int main() {
int arr[M][N] = {{1, 1, 0}, {3, 0, 2}, {1, 1, 1}, {1, 2, 0}};
int* p[M];
for (int i = 0; i < M; i++) {
p[i] = arr[i];
}
qsort(p, M, sizeof(int*), cmp);
for (int i = 0; i < M; i++) {
for (int j = 0; j < N; j++) {
cout << p[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
运行结果为:
```
1 1 0
1 1 1
1 2 0
3 0 2
```
代码说明:
1. 定义一个M行N列的二维数组arr。
2. 定义一个指针数组p,p中的每个元素都指向arr中的一行。
3. 调用qsort函数对p进行排序,排序时使用cmp函数进行比较。
4. 输出排序后的结果。
阅读全文