リンクされたリストの並べ替えアルゴリズムを構築しようとすると、スタック オーバーフロー例外が発生します。私のソートは同じピボットで無期限に動かなくなり、ベースケースに到達しない理由がわかりません。
//Intlist は、int var ".item" と .next ポインターを持つ単純な単一リンク リスト クラスです。
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);
}
}
これは、構築中のマージ ソートと同様に機能するはずですよね? 私の個々の機能は正常に動作しているようです。再帰の設定が間違っているだけですか?