给我写一段示范代码,使用qsort讲二维的点排序,排序规则为先比较x,x大的点更大,如果x相同,y大的点更大,假定没有相同的点
时间: 2024-12-23 15:16:32 浏览: 3
在C语言中,你可以编写如下的代码来使用qsort对二维点集合按照x值和y值进行升序排序:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义点结构体
typedef struct {
int x;
int y;
} Point;
// 比较函数,用于qsort
int compare_points(const void *a, const void *b) {
Point *p1 = (Point *) a;
Point *p2 = (Point *) b;
// 先按x值比较,再按y值比较
if (p1->x != p2->x)
return p1->x - p2->x; // 如果x不同,则较大的先排
else
return p1->y - p2->y; // 如果x相同,则y较大的先排
}
int main() {
Point points[] = {{5, 3}, {2, 7}, {9, 1}, {1, 4}};
int n = sizeof(points) / sizeof(points[0]);
// 对点集进行排序
qsort(points, n, sizeof(Point), compare_points);
printf("Sorted points:\n");
for (int i = 0; i < n; i++) {
printf("(%d,%d)\t", points[i].x, points[i].y);
}
printf("\n");
return 0;
}
```
在这个示例中,`compare_points`函数是qsort排序的关键,它定义了排序的规则。这段代码将会按照先x后y的顺序对点集进行升序排列。
阅读全文