c语言结构体数组排序
作者:野牛程序员:2023-08-04 09:16:41C语言阅读 3624
在 C 语言中,可以使用标准库的 qsort() 函数来对结构体数组进行排序。qsort() 函数是 C 语言提供的快速排序函数,可以通过指定比较函数来实现不同的排序方式。
下面是一个示例代码,演示如何对结构体数组按照年龄进行升序排序:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Person {
int age;
char name[50];
};
// 比较函数,按照年龄升序排序
int compareByAge(const void *a, const void *b) {
return ((struct Person *)a)->age - ((struct Person *)b)->age;
}
int main() {
struct Person people[] = {
{30, "John"},
{25, "Alice"},
{28, "Bob"},
{22, "David"}
};
int numPeople = sizeof(people) / sizeof(people[0]);
// 对结构体数组进行排序
qsort(people, numPeople, sizeof(struct Person), compareByAge);
// 输出排序后的结果
for (int i = 0; i < numPeople; i++) {
printf("Name: %s, Age: %d\\n", people[i].name, people[i].age);
}
return 0;
}在上述示例中,定义了一个名为 Person 的结构体,其中包含一个整数变量 age 和一个字符数组 name。然后,创建了一个结构体数组 people,并初始化了其中的元素。使用 qsort() 函数对结构体数组 people 进行排序,排序的依据是结构体的 age 成员,通过比较函数 compareByAge 实现升序排序。
运行上述代码将输出以下结果:
Name: David, Age: 22 Name: Alice, Age: 25 Name: Bob, Age: 28 Name: John, Age: 30
通过这种方式,可以对结构体数组按照不同的成员进行排序,只需要提供相应的比较函数即可。比较函数应该返回一个整数值,表示两个元素的相对顺序。如果返回负数,则表示第一个元素应该排在前面;如果返回正数,则表示第二个元素应该排在前面;如果返回零,则表示两个元素相等。这样,qsort() 函数会根据比较函数的返回值进行排序。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

- 上一篇:C++结构体转char数组
- 下一篇:C++结构体转化成字符数组
