C语言,结构体快排
答案:3 悬赏:50
解决时间 2021-01-20 20:38
- 提问者网友:一抹荒凉废墟
- 2021-01-20 15:58
C语言,结构体快排
最佳答案
- 二级知识专家网友:平生事
- 2021-01-20 16:33
自定义一个比较函数,直接调用快排库函数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;
}
//#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;
}
全部回答
- 1楼网友:玩世
- 2021-01-20 18:10
函数原型:
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);
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);
- 2楼网友:患得患失的劫
- 2021-01-20 17:21
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;
}
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;
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯