查补查找(二分查找的优化)

int insertsearch(int num[],int n)
{
    int low,mid,high;
    low=1;
    hign=N;
    while(low<=high)
    {/////下面是关键点//////
        mid=(high-low)*(n-num[low])/(num[high]-num[low])+low;
        if(mid<low || mid>high)
            return 0;
        if(n<num[mid])
            high=mid-1;
        else if(n>num[mid])
            low=mid+1;
        else
            return mid;
    }
    return 0;
}
  

 

posted @ 2014-04-18 21:29  xzenith  阅读(129)  评论(0编辑  收藏  举报