二分查找

对有序数组{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次

你可能感兴趣的:(二分查找)