qsort对结构体数组排序
时间: 2023-12-11 15:31:38 浏览: 106
qsort是C语言标准库中的一个快速排序函数,可以对任意类型的数组进行排序。对于结构体数组的排序,需要自定义比较函数来告诉qsort如何比较结构体元素的大小。
以下是一个示例代码,假设我们有一个结构体数组Person,其中包含name和age两个成员变量,我们要按照age从小到大的顺序对Person数组进行排序:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
char name[20];
int age;
} Person;
int cmp(const void *a, const void *b) {
return ((Person*)a)->age - ((Person*)b)->age;
}
int main() {
Person people[] = {{"Tom", 20}, {"Jerry", 18}, {"Alice", 22}, {"Bob", 19}};
int len = sizeof(people) / sizeof(Person);
qsort(people, len, sizeof(Person), cmp);
for (int i = 0; i < len; i++) {
printf("%s %d\n", people[i].name, people[i].age);
}
return 0;
}
```
在上面的代码中,我们定义了一个cmp函数作为qsort的比较函数,它接受两个指向Person结构体的指针a和b,比较它们的age成员变量的大小,如果a的age小于b的age,则返回负数,如果a的age等于b的age,则返回0,否则返回正数。在main函数中,我们先定义了一个Person数组people,然后调用qsort函数对它进行排序,最后输出排序后的结果。
阅读全文
相关推荐

















