为什么此C ++程序不显示任何输出?

shishank98

我正在尝试为二进制搜索编写代码,但未显示任何输出。请告诉我我的错误。

#include <iostream>
using namespace std;

int main(){
    int a[]= {1, 3, 5 , 7,  32};
    int n;
    cin>>n;
    int last=(sizeof(a)/sizeof(a[0]))-1;
    int first=0;
    while(first<=last){
        int mid=(last-1)/2;

        if(a[mid]==n){
            cout<<"No. Found"<< endl;
        }
        if(n>a[mid])
        {
            first=mid+1;
        }
        else
        {
            last=mid-1;
        }
    }
    cout<<"Not Found"<<endl;
    return 0;
}
贾维斯

您计算的方法mid是错误的,应该是这样的:

int mid = (first + last) / 2;

最好的方法是这样避免溢出(first + last可以溢出):

int mid = first + (last - first) / 2;

或与>>运营商:

int mid = (first + last) >> 1;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章