当前位置:首页C语言 > 正文

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
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击