快速排序(qsort)可以排任意类型的数据
例题
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct Stu
{
char name[20];
int age;
};
int int_cmp(const void* elem1, const void* elem2)//整型比较
{
return *(int*)elem1 - *(int*)elem2;//void类型无法直接解引用,先强制类型转换
}
void print(int arr[], int sz)//封装一个打印函数
{
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
}
int cmp_Stu_by_age(const void* e1, const void* e2)//结构体成员age进行比较
{
return ((struct Stu*)e1)->age - ((struct Stu*)e2)->age;
}
int cmp_Stu_by_name(const void* e1, const void* e2)//结构体成员name进行比较
{
return strcmp(((struct Stu*)e1)->name, ((struct Stu*)e2)->name);
}
void test1()//整型排序
{
int arr[10] = {
9,8,7,6,5,4