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
- 上一篇:小学1-6年级数学公式大全
- 下一篇:Dev C++安装教程