本文由 @lonelyrains 出品,转载请注明出处。
文章链接: http://blog.csdn.net/lonelyrains/article/details/45217067
// 表里没有相等元素,正确二分查找写法
#include <stdio.h>
int binSearch(int a[],int n,int key)
{
// 第一次调用时参数检查
if(n <= 0)
return -1;
// 递归调用的参数检查
if(n == 1 && a[0] != key)
return -1;
if(a[n/2]<key)
{
int index = binSearch(a+n/2,n-n/2,key);
return index == -1 ? -1 : n/2+index;
}
else if(a[n/2]>key)
{
return binSearch(a,n/2,key);
}
else return n/2;
}
void main()
{
int a[100000];
for(int i=0;i<sizeof(a)/sizeof(int);i++)
a[i] = i;
int index = binSearch(a,sizeof(a)/sizeof(int),sizeof(a)/sizeof(int)-1);
printf("index %d",index);
}
参考链接: