首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >二分搜索程序不能识别边界?

二分搜索程序不能识别边界?
EN

Stack Overflow用户
提问于 2014-12-10 22:56:31
回答 1查看 34关注 0票数 0

我正在用10个元素的数组编写一个简单的二进制搜索程序。这是我的代码;

代码语言:javascript
运行
复制
int main(int argc, char *argv[]) {
    int query, pos;
    int A[10] = {0,1,2,3,4,5,6,7,8,9}; //contents of the array
    cout<<"enter query      =   ";
    cin>>query; 
    int x=(10-1)/2; //the middle ground
    bool found = false;
    if(query<A[x]){ //if query is less than A[x] search before i
        for(int i=0;i<=x;i++){
            if(A[i]==query){
                found=true;
                pos=i;
            }
        }   
    }
    if(query>A[x]){
            for(int i=4;i<10;i++){
            if(A[i]==query){
                found=true;
                pos=i;
            }
        }
    }   
    if (found=false){
        cout<<"NOT FOUND"<<endl;
    }
    else{
        cout<<"FOUND AT A["<<pos<<"]"<<endl;
    }

    return 0;
}

奇怪的是,如果我试图搜索一个不存在的元素,它会返回FOUND AT A48092或其他东西。我哪里错了?

EN

回答 1

Stack Overflow用户

发布于 2014-12-10 23:05:09

您看到的数字是变量pos的值,您看到它的原因是因为输入错误:

代码语言:javascript
运行
复制
if (found=false)

应该是

代码语言:javascript
运行
复制
if (found == false)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27404085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档