我有这种递归二元搜索拼写检查方法。 sArray持有英格兰词典中的单词列表。键是您可以发送的任何单词。该方法将使用任何单词(键)并使用递归二进制搜索在字典(sArray)中查找它。
我无法弄清楚如何在每个单词的字典sArray中正确导航。然而,可以找到诸如“项目”和“测试”之类的单词,但是诸如“该”和“由”之类的单词不是。我知道这与我的递归步骤有关但是我无法根据compareTo找出正确的递归步骤。
public int bSearch(ArrayList<String> sArray, String key, int lowIndex, int highIndex) {
if (lowIndex > highIndex) {
System.out.println("The word was not found ");
return -1;
}
mid = (lowIndex + highIndex) / 2;
if (sArray.get(mid).equalsIgnoreCase(key)) {
System.out.println("WORD FOUND");
return mid;
} else if (sArray.get(mid).compareTo(key) > 0) {
return bSearch(sArray, key, lowIndex, mid - 1);
} else {
return bSearch(sArray, key, mid + 1, highIndex);
}