算法:改写二分搜索算法(教材2-3)

(SDIBT 计科181)

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

void BinarySearch(int a[],int x,int left,int right,int &i,int &j)
{
    while(left<=right)
    {
        int mid=(left+right)/2;
        if(a[mid]==x)
        {
            i=j=mid;
            return;
        }
        if(a[mid]>x)
            right=mid-1;
        else
            left=mid+1;
    }
    i=right;
    j=left;
    return ;
}
int main()
{
    int a[6]={1,5,6,7,22,34};
    int x;
    int i,j;
    scanf("%d",&x);
    b(a,x,0,5,i,j);
    printf("i=%d,j=%d\n",i,j);
    return 0;
}
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页