#include <stdio.h>
#include <string.h>
int BinFind(int a[],int n,int num,int *times) {
int mid,start = 0;
int end = n - 1;
++*times;
if(a[start] == num) return start;
++*times;
if(a[end] == num) return end;
while(start < end) {
++*times;
mid = (start + end)/2;
if(a[mid] == num) return mid;
else if(a[mid] > num) end = mid - 1;
else start = mid + 1;
}
return -1;
}
int main() {
int a[] = {9,11,15,20,32,36,58,85,96};
int pos,i,num = 96;
int n = sizeof(a)/sizeof(a[0]);
int times = 0;//查找次数
pos = BinFind(a,n,num,×);
printf("待查序列为:\n");
for(i = 0; i < n; ++i) printf("%d ",a[i]);
printf("\n");
if(pos >= 0) {
printf("s[%d] = %d\n",pos,num);
printf("共查找%d次。\n",times);
}
else printf("没找到数值%d,对不起。\n",num);
return 0;
}