习题2-3改写二分搜索算法

设a[0:n-1]是已排好序的数组,请改写二分搜索算法,使得当x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j。当搜索元素在数组中时,i和j相同,均为x在数组中的位置。

template <class T>
int binarySearch(T a[],const T&x,int left,int right,int &i,int &j){
    int middle;
    while(left<=right){
        middle=(left+right)/2;
        if(x==a[middle]){i=j=middle;return 1;}
        if(x>a[middle]) left=middle+1;
        else right=middle-1;
        }
    i=right;
    j=left;
    return 0;
}
posted @ 2021-07-05 16:07  guoyuxin3  阅读(64)  评论(0)    收藏  举报