目录
开门见山的说:
这个‘比较函数’
int型比较函数
字符比较函数
结构体比较函数
实例使用
开门见山的说:
qsort作为一个比较万能的排序函数,排序类型多的一批。
qsort作为一个比较万能的排序函数,使用缺陷就是需要自定义一个比较函数
使用qsort函数需要使用头文件
头文件->
#include
我们直接来说这个函数的参数,总共有四个
qsort( 需要排序数据的起始位置(指针类型),需要排序的元素个数,一个元素的字节大小,‘比较函数’)
需要排序数据的起始位置(指针类型),将首地址传输既可以
需要排序的元素个数,一个元素的字节大小
这个使用sizeof就能准确算出
这个‘比较函数’ 是因为qsort函数在使用时需要调用一个自定义的比较函数函数int型比较函数他的定义是返回值大于1就进行交换数据
参数写void函数
void*函数无确切类型,但是兼容性强,可以接受任意类型的转换和解引用。
但是void*不能进行指针运算。
咱们直接用强制类型转换指针,再进行比较
字符比较函数
int cmop_int (const void* a1,const void* a2)
{
return (*(int*)a1 - *(int*)a2);
}
结构体比较函数int cmop_char(const void* a1, const void* a2)
{
return (*(char*)a1 - *(char*)a2);
}
#include
struct Stu
{
char name[10];
int age;
double gz;
};
int cmop_sut_name(const void* a1, const void* a2)
{
return ((struct Stu*)a1)->age- ((struct Stu*)a2)->age;}
结构体中字符比较 需要使用 strcmp这个函数
int cmop_sut_char(const void* a1, const void* a2)
{
return strcmp( ((struct Stu*)a1 )->name,((struct Stu*)a2)->name ) ;}
实例使用
使用到的头文件
#include
#include
#include
数组比较
int cmop_int (const void* a1,const void* a2)
{
return (*(int*)a1 - *(int*)a2);
}
int main()
{
//数组
int arr[] = { 5,48,56,35,12,174,78 };
int sz = sizeof(arr)/ sizeof(arr[0]) ;
qsort(arr,sz, sizeof(arr[0]) ,cmop_int);
return 0;
}
字符数组比较
int cmop_char(const void* a1, const void* a2)
{
return (*(char*)a1 - *(char*)a2);
}
int main()
{
//字符数组
char drr[] = {'c','e','f','r','h','a' };
int sz = sizeof(drr) / sizeof(drr[0]);
qsort(drr, sz, sizeof(drr[0]), cmop_char);
return 0;
}
结构体数组比较
struct Stu
{
char name[10];
int age;
double gz;
};
int cmop_sut_name(const void* a1, const void* a2)
{
return ((struct Stu*)a1)->age- ((struct Stu*)a2)->age;
}
int cmop_sut_char(const void* a1, const void* a2)
{
return strcmp( ((struct Stu*)a1 )->name,((struct Stu*)a2)->name ) ;
}
int main()
{
//结构体
struct Stu trr[3] = { {"zhangsan", 20, 3000.5},{"lisi", 30, 15000.85},{"wangwu", 10, 36520.58} };
int sz = sizeof(trr) / sizeof(trr[0]);
qsort(trr, sz, sizeof(trr[0]), cmop_sut_name);
return 0;
}
哈,谢谢各位同志的阅读,然后呢如果觉得本文对您有所帮助的话,还给个免费的赞吧
Thanks♪(・ω・)ノ
(期待一下,要是有分享和收藏更好啦)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)