c语言结构体数组排序
作者:野牛程序员:2023-08-04 09:16:41C语言阅读 3051
在 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++结构体转化成字符数组