关于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函数是如何确定的吗?? 展开
我知道这个函数是什么意思.
但是我的问题是.
假设这个 函数 传递 *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函数是如何确定的吗?? 展开
3个回答
展开全部
这个函数只是让你在快速排序里确定所使用的规则,这是一个泛化的过程,可能初衷是不只用于数字排序,甚至是字符排序,结构体排序,等等。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
从你的提问来看,我觉得你是想了解快速排序算法的原理。
http://baike.baidu.com/view/115472.htm
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查看。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询