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

c语言用sort对数组和结构体数组排序

作者:野牛程序员:2024-12-09 21:02:21C语言阅读 2095
c语言用sort对数组和结构体数组排序

在 C 语言中,qsort 函数可以用来对数组和结构体数组进行排序。qsort 是标准库函数,它根据给定的比较函数对数组进行排序。下面分别展示如何对普通数组和结构体数组进行排序。

1. 对普通数组排序

假设有一个整型数组,使用 qsort 对其进行排序。

#include <stdio.h>
#include <stdlib.h>

// 比较函数,返回值用于判断大小
int compare(const void *a, const void *b) {
    return (*(int*)a - *(int*)b);  // 比较两个整数的大小
}

int main() {
    int arr[] = {34, 23, 12, 56, 78, 9};
    int size = sizeof(arr) / sizeof(arr[0]);

    // 使用 qsort 排序
    qsort(arr, size, sizeof(int), compare);

    // 打印排序后的数组
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }

    return 0;
}

2. 对结构体数组排序

假设有一个表示学生的结构体数组,按照分数排序。

#include <stdio.h>
#include <stdlib.h>

// 定义学生结构体
typedef struct {
    char name[50];
    int score;
} Student;

// 比较函数,根据学生分数排序
int compare(const void *a, const void *b) {
    Student *studentA = (Student *)a;
    Student *studentB = (Student *)b;

    return studentA->score - studentB->score;  // 按照分数升序排序
}

int main() {
    // 定义并初始化学生数组
    Student students[] = {
        {"Alice", 88},
        {"Bob", 95},
        {"Charlie", 80},
        {"David", 92}
    };
    int size = sizeof(students) / sizeof(students[0]);

    // 使用 qsort 排序
    qsort(students, size, sizeof(Student), compare);

    // 打印排序后的学生信息
    for (int i = 0; i < size; i++) {
        printf("%s: %d\n", students[i].name, students[i].score);
    }

    return 0;
}
  • qsort 函数

    • 第一个参数是待排序数组的指针。

    • 第二个参数是数组的元素个数。

    • 第三个参数是每个元素的大小(通常使用 sizeof 来获取)。

    • 第四个参数是比较函数指针,比较函数需要接收两个 const void * 类型的参数。

  • 比较函数

    • 比较函数需要根据两个元素进行比较,并返回一个整数:如果返回值小于 0,表示第一个元素小于第二个元素;如果返回值等于 0,表示两者相等;如果返回值大于 0,表示第一个元素大于第二个元素。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • c语言用sort对数组和结构体数组排序
  • 相关推荐

    最新推荐

    热门点击