c++结构体自定义排序
时间: 2023-09-14 13:12:47 浏览: 194
要在C语言中对结构体进行自定义排序,可以使用标准库函数`qsort()`来实现。下面是一个示例代码,演示如何对一个包含姓名和年龄的结构体数组按照年龄进行排序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义结构体
typedef struct {
char name[20];
int age;
} Person;
// 比较函数,用于排序
int compare_age(const void* a, const void* b) {
Person* p1 = (Person*)a;
Person* p2 = (Person*)b;
return p1->age - p2->age;
}
int main() {
// 创建结构体数组
Person people[] = {
{"Alice", 22},
{"Bob", 18},
{"Charlie", 25},
{"David", 20}
};
int num_people = sizeof(people) / sizeof(Person);
// 对结构体数组进行排序
qsort(people, num_people, sizeof(Person), compare_age);
// 打印排序后的结果
for (int i = 0; i < num_people; i++) {
printf("Name: %s, Age: %d\n", people[i].name, people[i].age);
}
return 0;
}
```
这段代码中,我们首先定义了一个`Person`结构体,包含姓名和年龄两个字段。然后定义了一个`compare_age()`函数作为比较函数,用于比较结构体的年龄字段。接着在`main()`函数中创建了一个包含4个人的结构体数组`people`,并使用`qsort()`函数对其按照年龄进行排序。最后我们遍历排序后的数组,打印每个人的姓名和年龄。
你可以根据自己的需求修改这段代码,比如改变结构体的字段,或者定义其他的比较函数来实现不同的排序方式。
阅读全文