c++这道题怎么做?(二分查找)

如题所述

//在a中寻找num的下标,没有找到返回-1。
int findIndex(int num,int a[],int size){
    return bs(num,a,0,size-1);
}
int bs(int num,int a[],int begin,int end){
    if(end<start)return -1;
    int mid=(begin+start)/2;
    if(a[mid]==num)return mid;
    if(a[mid]>num)return bs(n,a,begin,mid-1);
    return bs(n,a,mid+1,end);
}

追问

那你能帮我修改一下程序吗?

你发的是我没学过的知识

追答

哦 你用的循环啊 递归也行。差不多对的吧 那不是括号不匹配吗mid=L+(R-L)/2;

//这部分加个括号括起来
if(a[mid]==num){
    cout<<""
    break;
}

追问

可为什么我不管怎么改都是显示错误。

追答

显示错误??编译的结果说一下啊
包含了头文件么 看不到前几行

追问

无法运行。

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-05-10
很简单,先找中间那个数56,发现21比56小,于是在左边那一半找,左边那一半的中间那个数是19,然后发现21比19大,于是在19的右边找,从而找到了21
相似回答