博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~
http://www.cnblogs.com/chenxiwenruo/p/8538760.html
特别不喜欢那些随便转载别人的原创文章又不给出链接的
所以不准偷偷复制博主的博客噢~~

 

二分搜索算是常见的搜索方式了,由于有时候经常会遇到返回值不同的情况出现,所以就把能想到的几个整理了下。

1.如果存在,返回对应的索引(任意一个即可);如果不存在,返回-1

/*
a为已经排序好的数组,t为要查找的目标值,n为数组长度
如果存在,返回任意一个索引即可
如果不存在,返回-1
*/
int binarySearch(int *a,int t,int n){
    int l=0,r=n-1;
    int mid;
    //注意这里是l<=r
    while(l<=r){
        mid=(l+r)>>1;
        if(a[mid]==t)
            return mid;
        if(t<a[mid])
            r=mid-1;
        else
            l=mid+1;
    }
    return -1;
}
View Code

相关文章: