C语言,结构体快排

比如对于结构体structln{intdata;intscore;intmath;}ss[100];根据ss[i].data的大小对整个结构体进行快排,即使用qsort函... 比如对于结构体
struct ln
{
int data;
int score;
int math;
}ss[100];
根据ss[i].data的大小对整个结构体进行快排,即使用qsort函数进行排序。因为我使用冒泡法排序超时了,所以考虑一下看能不能用快排,可是不怎么会对结构体使用快排,谢谢各位了!!
展开
 我来答
White_MouseYBZ
2015-11-13 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6358万
展开全部

自定义一个比较函数,直接调用快排库函数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("\n");
    return 0;
}
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
百度网友ac22941
2011-03-10 · TA获得超过213个赞
知道答主
回答量:132
采纳率:0%
帮助的人: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);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shishaobing
2011-03-12 · 超过12用户采纳过TA的回答
知道答主
回答量:20
采纳率:0%
帮助的人:0
展开全部
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;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式