// 表里没有相等元素,正确二分查找写法 #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); }
参考链接:
http://blog.csdn.net/drzhouweiming/article/details/1562717
时间: 2024-11-19 03:46:31