博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~
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; }