二进制搜索代码找不到数组的A [0]元素

时间:2017-08-27 15:58:16

标签: c++ binary-search

所以,每当我尝试搜索A [0]元素时(在这种情况下为23)。它不返回元素的位置。但是,当我尝试搜索其他元素A [0]时,它工作正常。请告诉我代码有什么问题,我该如何修复它。 示例输出 - 输入要搜索的项目 - 23 输出 - 在该阵列中找不到元素23。 提前致谢!

#include <iostream>
using namespace std;
int main(){
    int A[]= {23, 34, 45, 67, 75, 89};
    int I= sizeof(A)/sizeof(A[0]);
    int LAST= I-1, FIRST= 0, MID, ITEM, INDEX= 0;
    MID= ((FIRST + LAST)/2);
    cout<<"Enter item to search- ";
    cin>>ITEM;
    while(FIRST <= LAST){
        if(A[MID] == ITEM){
            INDEX= MID;
            break;
        }
        else if(A[MID] < ITEM){
            FIRST= MID+1;
        }
        else{
            LAST= MID-1;
        }
        MID= ((FIRST + LAST)/2);
    }
    if(INDEX != 0){
        cout<<"\nElement "<<ITEM<<" found at position "<<(INDEX+1);
    }
    else{
        cout<<"\nElement "<<ITEM<<" could not be found in this array.";
    }
}

2 个答案:

答案 0 :(得分:2)

 if(INDEX >= 0){
   cout<<"\nElement "<<ITEM<<" found at position ". 
           <<(INDEX+1);
  }

索引从数组中的0开始。因此,修改IF条件以检查INDEX&gt; = 0.如果未找到input元素,则INDEX将返回-1。

答案 1 :(得分:1)

你已经放置if index!=0条件,但23是在索引0