结构体排序及qsort用法

结构体排序的题
pta平台结构体排序
qsort题1
qsort题2
巧用qsort算法3
巧用qsort算法4
巧用qsort算法5
还有很多用qsort的题,不列举了,多个元素如结构体,好用qsort,cmp大发

qsort(数组地址,数组元素大小,size,compar)
compar为比较函数,一般用int型
比如int型数组排序

int num[100];
int cmp_int(const void* _a , const void* _b)  //参数格式固定
{
    int* a = (int*)_a;    //强制类型转换
    int* b = (int*)_b;
    return *a - *b;  
}

qsort(num,100,sizeof(num[0]),cmp_int); 


compar参数指向一个比较两个元素的函数。比较函数的原型应该像下面这样。注意两个形参必须是const void *型,同时在调用compar 函数(compar实质为函数指针,这里称它所指向的函数也为compar)时,传入的实参也必须转换成const void *型。在compar函数内部会将const void *型转换成实际类型,见下文。

int compar(const void *p1, const void *p2);
如果compar返回值小于0(< 0),那么p1所指向元素会被排在p2所指向元素的前面
如果compar返回值等于0(= 0),那么p1所指向元素与p2所指向元素的顺序不确定
如果compar返回值大于0(> 0),那么p1所指向元素会被排在p2所指向元素的后面
因此,如果想让qsort()进行从小到大(升序)排序,那么一个通用的compar函数可以写成这样:


发布了13 篇原创文章 · 获赞 1 · 访问量 141

猜你喜欢

转载自blog.csdn.net/safafs/article/details/105610319
今日推荐