中易网

qsort 结构体排序

答案:3  悬赏:80  
解决时间 2021-02-17 07:15
qsort 结构体排序
最佳答案
七种qsort排序方法

<本文中排序都是采用的从小到大排序>

一、对int类型数组排序

int num[100];

Sample:

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

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

二、对char类型数组排序(同int类型)

char word[100];

Sample:

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

qsort(word,100,sizeof(word[0]),cmp);

三、对double类型数组排序(特别要注意)

double in[100];

int cmp( const void *a , const void *b )
{
return *(double *)a > *(double *)b ? 1 : -1;
}

qsort(in,100,sizeof(in[0]),cmp);

四、对结构体一级排序

struct In
{
double data;
int other;
}s[100]

//按照data的值从小到大将结构体排序,关于结构体内的排序关键数据data的类型可以很多种,参考上面的例子写

int cmp( const void *a ,const void *b)
{
return (*(In *)a).data > (*(In *)b).data ? 1 : -1;
}

qsort(s,100,sizeof(s[0]),cmp);

五、对结构体二级排序

struct In
{
int x;
int y;
}s[100];

//按照x从小到大排序,当x相等时按照y从大到小排序

int cmp( const void *a , const void *b )
{
struct In *c = (In *)a;
struct In *d = (In *)b;
if(c->x != d->x) return c->x - d->x;
else return d->y - c->y;
}

qsort(s,100,sizeof(s[0]),cmp);

六、对字符串进行排序

struct In
{
int data;
char str[100];
}s[100];

//按照结构体中字符串str的字典顺序排序

int cmp ( const void *a , const void *b )
{
return strcmp( (*(In *)a)->str , (*(In *)b)->str );
}

qsort(s,100,sizeof(s[0]),cmp);

七、计算几何中求凸包的cmp

int cmp(const void *a,const void *b) //重点cmp函数,把除了1点外的所有点,旋转角度排序
{
struct point *c=(point *)a;
struct point *d=(point *)b;
if( calc(*c,*d,p[1]) < 0) return 1;
else if( !calc(*c,*d,p[1]) && dis(c->x,c->y,p[1].x,p[1].y) < dis(d->x,d->y,p[1].x,p[1].y)) //如果在一条直线上,则把远的放在前面
return 1;
else return -1;
}

PS:

其中的qsort函数包含在的头文件里,strcmp包含在的头文件里
另外,站长团上有产品团购,便宜有保证
全部回答
我暂时保留我的看法!
我暂时保留我的看法!
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
一个女生可以做到出淤泥而不染说明什么
被蜂子着了何时好
剑网3上阳宫秘境怎么打 剑网3上阳宫秘境打法
帮忙收集这种类似的图片
停车场(祥瑞小区北)(颐春路西50米停车场)地址
2011年的昂科雷最高配置的新车多少钱?2011年
连铸三大件的介绍
看我们这边广场的人工湖里的鱼常年没人喂也能
QQ飞车里用剃刀的人越来越少可为什么在飞车SS
二手50装载机多少钱
腰围23是多少啊?不会算……我量的是23
波霸 是什么意思
四岁小孩睡玉石床垫好不好
互联网项目,应用型,平台型,生态型的区分
截止到2011年3月5日,科比的NBA总得分是多少
推荐资讯
桔子瑜伽(阳光丽景店)地址在什么地方,我要处
身体 主要冬天女孩怕冷 挂什么科
苍南农保卡去人民医院看病没有住院能报销吗
牡丹栀子花香还是单瓣小栀子花香
吃小龙虾皮肤过敏了,还能洗澡吗?
左侧颊部因口腔黏膜腺泡细胞癌做了手术,请问
一个羊圈依墙而建
农民工工伤7级工资3000元山东省能赔偿多少?
今年专升本错过报志愿了怎么办
车辆违章处罚为警告什么意思
一场大病倾家荡产,那“社保”又能保障什么?
为什么有的人写字那么喜欢用黑笔(我同桌就是)
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?