二分查找最多需要查找lgN + 1个数
#include <stdio.h>
int bineary_search(int a[], int key, int size){
int low = 0;
int high = size - 1;
while(low <= high){
int mid = (low + high) / 2;
if(key < a[mid])
high = mid - 1;
else if(key > a[mid])
low = mid + 1;
else
return mid;
}
return -1;
}
int main(){
int pos, n;
int arr[] = {10, 12, 16, 18, 23, 29, 33, 48, 54, 57, 68, 77, 84, 98};
int len = sizeof arr/sizeof arr[0];
puts("Enter a number:");
scanf("%d", &n);
pos = bineary_search(arr, n, len);
if(pos < 0)
printf("%d can not found in array.\n", n);
else
printf("location = %d\n", pos);
return 0;
}