我得到一個堆棧溢出異常,試圖構造鏈表的排序算法。我的排序無限期地停留在同一個樞軸上,我無法弄清楚它爲什麼沒有達到基本情況。爲什麼我的樞軸排序算法沒有達到基本情況?
// intList中是一個簡單的單向鏈表類的int VAR「.item」等。接下來指針
pivotS(Intlist thisList){
if (thisList == null || thisList.next == null){
return thisList;
} else{
int pivot = thisList.item;
Intlist lower = lowerThanPivot(pivot, thisList);
Intlist upper = greaterOrEqualPivot(pivot, thisList);
lower = pivotS(lower);
upper = pivotS(upper);
return appendLists(lower, upper);
}
}
這應的工作方式類似於合併排序的建設,對不對?我個人的功能似乎很好。我只是設置遞歸錯誤?
哪裏是返回類型。 – Mordechai
你可以發佈lowerThanPivot()或者greaterOrEqualPivot()嗎?我認爲這是一個遍歷列表的問題(也許你是通過不重置迭代器或其他東西來跳過元素),看到迭代器內置到實際的列表類中,據我所知,並且你從未提及過除.next和.item以外的任何其他方法 –
此人發現.item嚴格低於pivot的成員。如果(L == null){ return L; (L.item> = n){ } return lowerThanPivot(n,L.next); } else { return new Intlist(L.item,lowerThanPivot(n,L.next)); }} – Frank