我正在阅读我的C ++书籍,我对二进制搜索有疑问。有一个名为critter
的数组,其中填充了(按顺序)= {auk, bat, cow, eel, elk, fox, gnu, pig, rat}
所以,如果我想找到鳗鱼,我相信会通过指数4 - > 1 - > 2 - > 3从我书中给出的公式。但是,如果你想搜索不在数组中的东西呢?
这本书告诉我算法是
set found = false
set first = 0
set last = n - 1 (n being the number of elements)
while first <= last and !found do following:
a) Calc loc = (first+last)/2
b) if item < a[loc] then
set last = loc - 1
else if a[loc] > item then
set first = loc + 1
else
set found = true
end while
所以如果该项目不存在,它是否会跳转到found = true,因为它不能&lt;或者&gt;?或者它会通过数组中的每个索引吗?
答案 0 :(得分:0)
当first
不小于last
时,您会注意到循环将会退出:while first <= last
。
如果在find之前发生这种情况设置为true,则返回false。