我已經創建了一個字符串數組的二進制搜索,該數組應該有兩個參數,一個字查找和它正在掃描的數組。我一直在尋找我的代碼幾天,嘗試不同的事情來弄清楚該做什麼,但到目前爲止我還沒有能夠使代碼工作。我得到一個NullPointerException
或ArrayIndexOutOfBoundsException
。這是我到目前爲止。在Java中的字符串數組的遞歸二進制搜索
public int recSearch(String[] words, String wordToFind)throws ItemNotFoundException {
int start = 0;
int end = words.length - 1;
int mid = (start + end) /2;
if(end < start) {
return -1;
} else if (words[mid].equals(wordToFind)) {
incrementCount();
return mid;
} else if(words[mid].compareTo(wordToFind) < 0) {
String[] split = new String[mid - 1];
for(int i = 0; i < mid; i++) {
split[i] = words[i];
}
return recSearch(split,wordToFind);
} else if(words[mid].compareTo(wordToFind) > 0) {
String[] split = new String[mid - 1];
for(int i = 0; i < mid -1; i++) {
split[i] = words[i];
}
return recSearch(split,wordToFind);
}
return -1;
// throw new ItemNotFoundException();
}
我要求只是要確定 - 你傳遞排序數組上面的功能呢? – pnadczuk
你將大多得到1或2作爲結果。你的兩個回報陳述是錯誤的。 'return recSearch(split,wordToFind);'應該由'return recSearch(split,wordToFind)+ start替換'' – talex
是的,它是一個排序數組。 –