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不能用-连接.
用sort/qsort依据struct结构体中的某个变量对struct结构体排序
最新推荐文章于 2023-02-27 22:47:03 发布