二分查找

对有序数组{2、11、15、19、30、32、61、72、88、90、96}进行二分查找,则成功找到15需比较()次:
A 3 B 4 C 2 D 5

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 int binary_search(int* a, int len, int goal)
 5 {
 6     int low = 0;
 7     int high = len - 1;
 8     while(low <= high)
 9     {
10         int middle = (low + high)/2;
11         if(a[middle] == goal)
12             return middle;
13         //在左半边
14         else if(a[middle] > goal)
15             high = middle - 1;
16         //在右半边
17         else
18             low = middle + 1;
19     }
20     //没找到
21     return -1;
22 }
23 
24 int main(void){
25     int a[11] = {2,11,15,19,30,32,61,72,88,90,96};
26     printf("%d\n", binary_search(a, 11, 15));
27     return 0;
28 }

答案是2次

posted @ 2015-07-22 09:56  XiaoManon  阅读(408)  评论(0编辑  收藏  举报