重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
归 调用,在不断的压 栈 过程中,造成 栈 容量超过1m而 导致 溢出 .2,解决方案:方... 算法正确的情况下,使用过程中会出现堆 栈溢出 的话,可以通过修改PLUS函数,
创新互联建站专注于浉河网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供浉河营销型网站建设,浉河网站制作、浉河网页设计、浉河网站官网定制、小程序开发服务,打造浉河网络公司原创品牌,更为您提供浉河网站排名全网营销落地服务。
1. 应该是您的递归算法调用的层级太多导致的。优化下算法,让调用层级减低才行。
2. 这种情况自己维护个栈序列,用循环的方式来处理应该就可以了。
例如可以是:
1. (start,end)入栈
2. 栈是否为空,若为空则退出
3. 弹出栈定元素,如果start-endbreakpoint使用插入排序,完成后回到2。
否则对[start,end]序列进行划分,将小于和大于choosePivot(a,start,end);的区间入栈
(minstart,minend), (maxstart, maxend)
4. 重复2,3,直到栈为空
private static void qsort(int[]a,int low,int high)
{
int pos=Qpass(a, low, high);
qsort(a,low,pos-1);
qsort(a,pos+1,high);
}
没有结束条件,肯定会一致无限地递归下去,直到栈溢出了。。
快速排序的终止条件是:low=high
即改为
private static void qsort(int[]a,int low,int high)
{
if( low high)
{
int pos=Qpass(a, low, high);
qsort(a,low,pos-1);
qsort(a,pos+1,high);
}
}