我試圖實現一個搜索方法,它返回一個對象的索引,它應該被遞歸地插入到一個排序列表中。遞歸搜索新項目在排序列表中的位置?
這是我的嘗試。
//listSize is the number of elements inside the sorted list
//sortedList is the actual structure holding the values
// Note: the parameter Value is comparable.
public int search(T value,int index){
if(listSize == 0){
return 0;
}
if(index > listSize){
return listSize+1; //add at the end
}
if(value.compareTo(sortedList[index]) > 0 && value.compareTo(sortedList[index+1]) < 0){
//value is less
return index+1;
}else if(value.compareTo(sortedList[index]) == 0){
//both are same
return index+1;
}
return search(value,index++);
}
由於某種原因,我似乎得到了StackOverflowError
。
你應該使用'++ index'嗎? – Nishant 2012-02-08 08:36:03
即使您修正了由templatetypedef正確標識的錯誤,您仍然會遇到問題,即您在列表中每個元素都使用了一個堆棧框架,所以只要您的列表大於某個列表,您仍然會遇到問題幾千個元素。看看列表是如何分類的,你可能會想要實現一個二分法搜索。 – Dolda2000 2012-02-08 09:22:50