在二元搜索期间检查的索引

时间:2014-11-07 23:04:45

标签: c++ binary-search

我正在阅读我的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;?或者它会通过数组中的每个索引吗?

1 个答案:

答案 0 :(得分:0)

first不小于last时,您会注意到循环将会退出:while first <= last

如果在find之前发生这种情况设置为true,则返回false。