荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: huhaiming (一生只爱她), 信区: Program
标 题: Re: stdlib里面的快速排序和二分查找
发信站: 荔园晨风BBS站 (Thu Mar 18 12:44:07 2004), 站内信件
1、cmp的参数有误,需要用const
2、可以得到结果,但是不够安全,建议还是返回结构体的int元素大小关系会好一点
譬如:你试试更改了定义的顺序
struct node{
char ch;
int info;
};
你看看运行的结果是否还是如愿? (即时你把qsort的第一个参数修改正确为a)
【 在 kali (江火) 的大作中提到: 】
: 我这样可以得结果,你看如何?
: #include <stdio.h>
: #include <stdlib.h>
: struct node{
: int info;
: char ch;
: };
: int n=6;
: int cmp(void *p,void *q)
: {
: return *(int*)p-*(int*)q;
: }
: int main()
: {
: int i;/*info[6]={1,53,9,23,11,25}; */
: struct node a[6]={{1,'a'},{53,'m'},{9,'p'},{23,'u'},{11,'s'},{25,'t'}};
: for(i=0;i<n;i++) printf("a[%d]=%d %c\n",i,a[i].info,a[i].ch);
: qsort(&a[0].info,n,sizeof(a[0]),cmp);
: for(i=0;i<n;i++) printf("a[%d]=%d %c\n",i,a[i].info,a[i].ch);
: return 0;
: }
: 【 在 huhaiming (一生只爱她) 的大作中提到: 】
: : 可以的。比较函数的大小关系是适当更改。
: : 调用qsort时的参数也要注意更改。
: : int cmp(const void *p,const void *q)
: : {
: : struct node *r,*s;
: : r=(struct node*)p,s=(struct node*)q;
: : return r->info-s->info;
: : }
: : 调用时: qsort(a,sizeof(a)/sizeof(a[0]),sizeof(struct node),cmp); //排序
: : //直接写成 qsort(a,5,sizeof(struct node),cmp); 也可以
--
菩提本无树,明镜亦非台
本来无一物,何处惹尘埃
※ 修改:·huhaiming 於 Mar 18 12:46:54 修改本文·[FROM: 61.144.235.39]
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 61.144.235.39]
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店