C语言编写代码,n个点的坐标,按照x坐标从小到大进行排序,并输出序号
时间: 2024-03-06 08:51:34 浏览: 129
好的,可以使用结构体来存储每个点的坐标以及序号,然后使用快速排序来按照x坐标从小到大进行排序。
以下是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int x;
int y;
int idx;
} Point;
int cmp(const void* a, const void* b) {
Point* p1 = (Point*)a;
Point* p2 = (Point*)b;
return p1->x - p2->x;
}
int main() {
int n;
scanf("%d", &n);
Point* points = (Point*)malloc(n * sizeof(Point));
for (int i = 0; i < n; i++) {
scanf("%d %d", &points[i].x, &points[i].y);
points[i].idx = i;
}
qsort(points, n, sizeof(Point), cmp);
for (int i = 0; i < n; i++) {
printf("%d ", points[i].idx);
}
free(points);
return 0;
}
```
输入格式为:
```
n
x1 y1
x2 y2
...
xn yn
```
其中,n为点的个数,xi和yi分别为第i个点的坐标,输出为按照x坐标从小到大排列后每个点的序号。
阅读全文