浮点型结构体排序代码
时间: 2024-10-09 11:15:14 浏览: 37
浮点型结构体排序通常涉及到自定义比较函数,因为在C语言中,标准库中的`qsort`等排序算法默认按照整数或字符类型的顺序进行排列,对于浮点数会按其二进制表示进行。如果你想对包含浮点数的结构体数组进行排序,比如`struct Point`有`x`和`y`两个浮点成员,你可以这样做:
```c
#include <stdio.h>
#include <stdlib.h>
// 假设我们有一个Point结构体
typedef struct {
float x;
float y;
} Point;
// 自定义比较函数,用于按照x值升序排序
int compare_points(const void *a, const void *b) {
const Point *p1 = (const Point *) a;
const Point *p2 = (const Point *) b;
return p1->x < p2->x ? -1 : p1->x > p2->x ? 1 : 0; // 如果x相等再比y
}
// 排序函数示例,传入结构体数组、元素个数和自定义比较函数
void sort_points(Point points[], int n) {
qsort(points, n, sizeof(Point), compare_points);
}
int main() {
Point points[] = {{3.5, 2.0}, {1.0, 4.5}, {2.0, 1.5}};
int n = sizeof(points) / sizeof(points[0]);
sort_points(points, n);
for (int i = 0; i < n; i++) {
printf("Point %d: (%f, %f)\n", i+1, points[i].x, points[i].y);
}
return 0;
}
```
阅读全文