c语言用sort对数组和结构体数组排序
作者:野牛程序员:2024-12-09 21:02:21C语言阅读 2832
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++安装教程
