关于C语言中快速排序 int (*fcmp)(const void *,const void *) 这个函数的运行原理 50

int(*fcmp)(constvoid*,constvoid*)我知道这个函数是什么意思.但是我的问题是.假设这个函数传递*p和*q俩个值地址int(*fcmp)(co... int (*fcmp)(const void *,const void *)

我知道这个函数是什么意思.
但是我的问题是.

假设这个 函数 传递 *p 和*q 俩个值地址
int (*fcmp)(const void *p,const void *q)

{
if(*(int *)p>*(int *)q)
return 1;
if(*(int *)p<*(int *)q)
return -1;

retuern 0;
}
在这个函数中 我想知道 指针*p 和 *q 接收的地址 是通过qsort函数的哪些步骤确定之后 所传递下来的..数字对比的时候正常我们写冒泡的话是通过for循环来人为的定义从数组前开始对比还是数组后开始对比,但是在这里 我不知道 他的代码是如何体现的..哪位仁兄能告我一下 需要要对比的数字 qsort函数是如何确定的吗??
展开
 我来答
欧修谨7X
2012-10-01 · TA获得超过348个赞
知道小有建树答主
回答量:155
采纳率:100%
帮助的人:120万
展开全部
这个函数就是个比较函数啊,你在冒泡排序中也要比较大小吗,它的话,因为你比较的东西不一定是整数,你若用个函数指针来预留接口,那么整体的快排几乎不用改代码,只要多写个函数来告诉快排用那个比大小的方法,写出来的快排适用性 更广,至于快排算法,网上很多,你可以看看,总之这个就是来比较大小的。
zhangdebo321
2012-10-03 · TA获得超过203个赞
知道小有建树答主
回答量:262
采纳率:100%
帮助的人:197万
展开全部
这个函数只是让你在快速排序里确定所使用的规则,这是一个泛化的过程,可能初衷是不只用于数字排序,甚至是字符排序,结构体排序,等等。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
vinx123
2012-10-01
知道答主
回答量:25
采纳率:0%
帮助的人:26.7万
展开全部
从你的提问来看,我觉得你是想了解快速排序算法的原理。
http://baike.baidu.com/view/115472.htm
追问
你没明白我说的是什么意思. 快排原理我知道. 我给你举个例子
void temp(int a,int b) //注意这里
{
printf("%d%d\n",a,b);

}
int main()
{
int a=10,b=20;
temp(a,b); //在注意这里
}
在这里 因为我定义了a和b的值 所以我知道 传到函数中的 a=10 ,b =20
但在int (*fcmp)(const void *p,const void *q) 函数中 我怎么确定qsort是将数组的[0]还是[N-1]开始 我想知道的是这个.
追答
http://baike.baidu.com/view/982231.htm 

从qsort函数原型来看,它的入参是一个待排序数组(传入的是数组首地址),还有比较函数。比较函数fcmp是给qsort内部使用的,用来比较两个元素的大小。
至于qsort内部怎么利用你传进去的数组及比较函数,外面看不到。除非在你的比较函数中加入打印信息;或者调试代码,进入qsort查看。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式