#include <cstdio>

int binarySearch(int A[],int left,int right,int x){
    //[left,right],初值[0,n-1]。
    int mid;
    //left和right的中点。
    while(left<=right){     //如果left>right就没有闭区间了。
        mid=(left+right)/2; //取中点。
        if(A[mid]==x)   return mid; //找x,返回下标。
        else if(A[mid]>x){  //中间数大于x。
            right=mid-1;    //左子区间[left,mid-1]查找。
        }else{              //中间数小于x。
            left=mid+1;     //右子区间[mid+1,right]查找。
        }
    }
    return -1;
}

int main(){
    const int n=10;
    int A[n]={1,3,4,6,7,8,10,11,12,15};
    printf("%d %d\n",binarySearch(A,0,n-1,6),binarySearch(A,0,n-1,9));
    return 0;
}

标签: none

添加新评论