qsort排序按照三元组的第三位排序
时间: 2023-12-02 16:31:32 浏览: 29
可以使用qsort函数和自定义的比较函数来按照三元组的第三位排序,具体实现如下:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义三元组结构体
typedef struct {
int x;
int y;
int z;
} Triple;
// 比较函数,按照第三位升序排序
int cmp(const void *a, const void *b) {
Triple *ta = (Triple *)a;
Triple *tb = (Triple *)b;
return ta->z - tb->z;
}
int main() {
Triple arr[] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 1}, {2, 3, 9}};
int n = sizeof(arr) / sizeof(Triple);
qsort(arr, n, sizeof(Triple), cmp);
for (int i = 0; i < n; i++) {
printf("(%d, %d, %d) ", arr[i].x, arr[i].y, arr[i].z);
}
printf("\n");
return 0;
}
```
输出结果为:
```
(7, 8, 1) (1, 2, 3) (4, 5, 6) (2, 3, 9)
```
可以看到,按照第三位升序排序后,三元组的顺序变为了`(7, 8, 1) (1, 2, 3) (4, 5, 6) (2, 3, 9)`。