歸 調(diào)用,在不斷的壓 棧 過程中,造成 棧 容量超過1m而 導(dǎo)致 溢出 .2,解決方案:方... 算法正確的情況下,使用過程中會出現(xiàn)堆 棧溢出 的話,可以通過修改PLUS函數(shù),
創(chuàng)新互聯(lián)建站專注于浉河網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供浉河營銷型網(wǎng)站建設(shè),浉河網(wǎng)站制作、浉河網(wǎng)頁設(shè)計、浉河網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務(wù),打造浉河網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供浉河網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
1. 應(yīng)該是您的遞歸算法調(diào)用的層級太多導(dǎo)致的。優(yōu)化下算法,讓調(diào)用層級減低才行。
2. 這種情況自己維護個棧序列,用循環(huán)的方式來處理應(yīng)該就可以了。
例如可以是:
1. (start,end)入棧
2. 棧是否為空,若為空則退出
3. 彈出棧定元素,如果start-endbreakpoint使用插入排序,完成后回到2。
否則對[start,end]序列進行劃分,將小于和大于choosePivot(a,start,end);的區(qū)間入棧
(minstart,minend), (maxstart, maxend)
4. 重復(fù)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);
}
沒有結(jié)束條件,肯定會一致無限地遞歸下去,直到棧溢出了。。
快速排序的終止條件是: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);
}
}