中易网

C语言,结构体快排

答案:3  悬赏:50  
解决时间 2021-01-20 20:38
C语言,结构体快排
最佳答案
自定义一个比较函数,直接调用快排库函数qsort即可。举例如下:
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
struct ln{
  int data,score,math;
}ss[100];
int mycmp(const void *a, const void *b){//自定义比较函数
    return ((struct ln*)a)->data-((struct ln*)b)->data;//若要降序,-号前后变量交换
}//data改为score或math就可按相应要素排序
int main(void){//测试一下……
    int i;
    srand((unsigned)time(NULL));
    for(i=0;i<100;ss[i++].data=rand()%1000);
    qsort(ss,100,sizeof(struct ln),mycmp);
    for(i=0;i<100;printf("%4d",ss[i++].data));
    printf("
");
    return 0;
}
全部回答
函数原型:
void qsort ( void * base, size_t num, size_t size, int ( * comparator ) ( const void *, const void * ) );
先定义一个比较函数:
int compare(const void* pLeft, const void* pRight)
{
return ((ln*)pLeft)->data - ((ln*)pRight)->data;
}
然后
qsort(ss, 100, sizeof(ln), compare);
int cmp(const void *p, const void *q);//声明函数
struct ln
{
int data;
int score;
int math;
}ss[100];
int main()
{
qsort(ss, 100, sizeof(struct ln), cmp);//对结构体ss进行快排
}
int cmp(const void *p,const void *q)//该函数进行的是升序快排,如果想要进行降序快排,则将
//1和-1调换即可
{
int c= (*(struct ln*)p).data - (*(struct ln*)q).data;//根据结构体中data的值进行排序
if(c>0) return 1;
else return -1;
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
武峰pvc扣板怎么安装
2008年1公斤装53度茅台酒值多少钱
像山穷水尽疑无路,柳暗花明又一村这样的诗句
苍溪县青松汽车服务有限公司怎么去啊,有事要
复议机关的复议决定加重损害 什么意思?
罗山县职业介绍中心地址有知道的么?有点事想
document.location和window.location有什么区
择业与就业的区别?该如何选择?
帮我设计个房屋出售的广告模板
航模推荐,准备在婚礼的时候搞个直升机送戒指
如何拆卸地弹簧门?
我是做二手房中介 怎么做网络销售 才能接到更
智能IC卡水表上显示31.7是什么意思
尾椎胀痛是什么原因?
哈尔滨哪家律师事务所好
推荐资讯
cos1等于多少
吴卓羲的《嫁衣裳》 歌词
检测近视度数的仪器sca分别是什么意思
中国移动通信(通富路旗舰店)地址有知道的么?
回族快乐午托辅导班地址有知道的么?有点事想
当你赞美别人时,要怎么表现出你的诚意
铺什么地板砖好
哪位说下空调买什么样子的好
康夫电动理发器好不好用?注意事项是什么?
乐颜蜗牛霜质量怎样
关于氰化钠致死量的问题?
哪个能说说浙江武义房价如何?有哪位能够说说
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?