我用快速排序可是变量的堆栈溢出了!求高手帮帮我把!谢谢了

这是我快速排序的函数的代码:voidQuicksortforDate(intI,intJ,inti){int*j,*k,*c;int*key,*key1;key=(int... 这是我快速排序的函数的代码:
void QuicksortforDate(int I,int J,int i)
{
int *j,*k,*c;
int *key,*key1;
key=(int*)malloc(sizeof(int));
key1=(int*)malloc(sizeof(int));
j=(int*)malloc(sizeof(int));
k=(int*)malloc(sizeof(int));
c=(int*)malloc(sizeof(int));
j[0]=J;
k[0]=I;
key[0]=Arraynumber[i][0];
while(I!=J)
{
c[0]=0;
while((J>I)&&(c[0]==0))
{
if(Arraynumber[i][J]<key[0])
{
key1[0]=Arraynumber[i][J];
Arraynumber[i][J]=Arraynumber[i][I];
Arraynumber[i][I]=key1[0];
c[0]=1;
J++;
}
J--;
}
c[0]=0;
while((I<J)&&(c[0]==0))
{
if(Arraynumber[i][I]>key[0])
{
key1[0]=Arraynumber[i][J];
Arraynumber[i][J]=Arraynumber[i][I];
Arraynumber[i][I]=key1[0];
c[0]=1;
I--;
}
I++;
}
}
free(key);
free(key1);
free(c);
if(((I-1)!=k[0])&&(I!=k[0]))
{
QuicksortforDate(k[0],I-1,i);
}
if(((I+1)!=j[0])&&(I!=j[0]))
{
QuicksortforDate(I+1,j[0],i);
}
free(k);
free(j);
}
问题就在于最后的k和j在递归之后释放,所以数据大了之后就溢出了,请问高手有什么办法吗?最好能实现快速排序!
展开
 我来答
YcdoiT
2011-07-31 · TA获得超过269个赞
知道小有建树答主
回答量:143
采纳率:0%
帮助的人:94万
展开全部
如果不看你的代码能给分吗? 哈哈。。
见参考资料的网址。
其实这个算法这么出名,肯定有很多经典的实现的,不妨先看看别人是怎么写的。

参考资料: http://hi.baidu.com/ycdoit/blog/item/e63d943cb5a24612bba167e8.html

盘碧34
2011-07-27
知道答主
回答量:11
采纳率:0%
帮助的人:4.4万
展开全部
数组开小了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式