Joh*_*ers 8 java recursion binary-search
好的,这是一个学校作业.我在进行递归二进制搜索时没有遇到任何问题,但是赋值明确指出该方法应该只接受2个参数,列表和您要搜索的项目.这是我有点失落的地方.
public int binarySearch(List<Card> cards, Card key)
{
int mid = (cards.size()) / 2;
if(cards.size() == 1) {
if(key.equals(cards.get(0))) {
return 0;
}
}
else {
if(key.equals(cards.get(mid))) {
return mid;
}
else if(key.compareTo(cards.get(mid)) == - 1) {
return binarySearch(cards.subList(0, mid), key);
}
else if(key.compareTo(cards.get(mid)) == 1) {
return mid + 1 + binarySearch(cards.subList(mid + 1, cards.size()), key);
}
}
return -1;
}
Run Code Online (Sandbox Code Playgroud)
所以这将工作正常,除非我正在搜索不存在的东西,它属于列表的上半部分.因为我只传递2个参数,所以我必须用每个递归调用更改列表,但是,如果它在上半部分我不能丢失我的索引点,所以我必须在那里添加递归调用,如果它最终不在上半部分然后它返回-1 +我之前考虑的所有那些索引.有没有办法可以清除它并使其返回-1?任何建议表示赞赏.
您可以使用两种方法,其中一种方法调用另一种方法。公共方法公开了您的作业所需的两个参数接口。它还可以检查空参数 - 这种事情只需要在开始时检查一次。
您的第二个方法是私有的,只能从第一个方法内部调用。这是标准的递归二分搜索,具有您需要的多个参数。
| 归档时间: |
|
| 查看次数: |
2590 次 |
| 最近记录: |