Boolean Binary Search (first,last)
if (last > first)
return false
else
Set middle to (first+last)/2
Set result to list[middle].compareTo(item)
if (result is equal to 0)
return true
else
if (result < 0)
Binary Search (first, middle - 1)
else
Binary Search(middle + 1, last)
'O'代表什么?如果它是我们想要搜索的项目,我们是否需要用'If(result&gt; O)'替换此伪代码中的'If(result&lt; O)'?
答案 0 :(得分:2)
此代码包含一个非常微妙的错误:如果(first + last) / 2
和first
的总和大于支持的最大值,last
可能会导致溢出。
更好的选择是使用first + (last - first) / 2
您可以在此处详细了解: https://research.googleblog.com/2006/06/extra-extra-read-all-about-it-nearly.html
答案 1 :(得分:1)
result
中的compareTo()
将/应包含以下内容之一:
0 : equal
1 : greater than
-1: less than