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

标签 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.";
    }
}

最佳答案

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

索引在数组中从 0 开始。因此,修改 IF 条件以检查 INDEX >= 0。如果未找到输入元素,则 INDEX 将返回 -1。

关于c++ - 二进制搜索代码找不到数组的 A[0] 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45906797/

相关文章:

c++ - 寻找用于计算 IP 地址的算法/类(直方图)

time-complexity - 为什么二分查找在所有情况下都在 O(log n) 时间内运行,而不是在 Θ(log n) 时间内运行?

lisp - 具有更高级别功能的 lisp 中的二进制搜索

c++ - 在两个不同的类之间共享同一个容器

c++ - 如何在 C++ 中的普通类或单例类中对私有(private)方法/枚举类进行 GoogleTest

c++ - 少量项目的 HashMap

algorithm - 搜索组合的 2 排序数组

c++ - C++ Primer 第 5 版中发现的错误 shared_ptr<int>

c++ - 离散二分查找

python - 在 O(log n) 时间内搜索旋转排序数组