200个数折半查找,求最大比较次数

1个回答

  • int Select(int* a,int len,int num) //num为我们要查找的数,len为数组长度,a为数组名

    {

    int L = 0; //设置最左右2点

    int R = len-1;

    int cont=0;

    while(1)//没找到无线循环

    {

    cont++; //cont为查找的次数,如果为-1 则是没有这个数字

    int m = (L+R)/2 ;

    if(L>R)

    return -1; //没有这个数,返回错误

    if(num == a[m])

    return cont; //返回找了几次

    else if(num>a[m])

    L = m+1; //把左边的坐标向右移动

    else

    R = m-1; //把右边的坐标向左移动

    }

    }