用sort/qsort依据struct结构体中的某个变量对struct结构体排序

sort和qsort对struct结构体排序的详细记录:


sort(p+i,p+j,cmp);// 被排序的范围为[p[i],p[j])

int cmp(struct node a,struct node b)
{
 return a.p<b.p;//p是依据的变量.注意连接符号是<号,不是-号.如果用减号 结果是逆序输出 而不是从小到大输出.
}

 qsort(a+i,j,sizeof(a[0]),cmp);//对[a[i],a[i+j])排序,不能没有cmp这一项,否则无法编译

int cmp(const void*a,const void*b)
{
 return((struct node*)a)->p - ((struct node*)b)->p;
}

sort用<连接是从小到大排序,>连接是从大到小排序.

qsort用<连接是从大到小排序,>连接是从小到大排序.

qsort可以用-连接,a-b对应的是从小到大排序,b-a是从大到小排序,sort不能用-连接.

以上讨论了用sort和qsort依据struct结构体中的某个变量对struct结构体排序,下面讨论没有struct结构体时sort和qsort的具体调用情况

qsort(a+i,j,sizeof(a[0]),cmp);//对[a[i],a[i+j])排序,不能没有cmp这一项,否则无法编译.

int cmp(const void*a,const void*b)
{
 return *(int *)a - *(int *)b;
}

a-b对应的是从小到大排序,b-a是从大到小排序

sort(a,a+7,cmp);//cmp这一项可以省略,默认从小到大排序.

int cmp(int a,int b)
{
 return a<b;
}

 

sort用<连接是从小到大排序,>连接是从大到小排序.

 

qsort用<连接是从大到小排序,>连接是从小到大排序.

 

qsort可以用-连接,a-b对应的是从小到大排序,b-a是从大到小排序,sort不能用-连接.

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值