#include <stdio.h>
#include <string.h>
//Binary Search
//递归版
int rBinarySearch(int a[],int left,int right,int k) {
if(a==NULL) {
printf("请检查输入!\n");
return -1;
}
//检查left和right的合法性
if(left<right) {
return -1;
}
int middle = (left+right)/2;
if(a[middle] > k)
return binarySearch(a,0,middle-1,k);
else if(a[middle] < k)
return binarySearch(a,middle+1,right,k);
else
return middle;
}
//非递归版
int binarySearch(int a[],int n,int k) {
if(a==NULL) return -1;
if(n<=0) return -2;
int left=0,right=n-1;
int middle = (left+right)/2;
while(left<=right) {
if(a[middle]>k) {
right = middle-1;
}
else if(a[middle] < k) {
left = middle+1;
}
else {
return middle;
}
middle=(left+right)/2;
}
if(left > right)
return -1;
}
void main() {
int a[8]={1,2,3,4,5,6,7,8};
//printf("%d",binarySearch(a,0,7,2));
printf("%d",binarySearch(a,8,9));
}