半分法查找

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 int *binsearch(int *base, int len, int data);
 4 
 5 int main()
 6 {    
 7     int * p = NULL;
 8     int a[4] = {1, 2, 45, 68};//排好序的数组
 9     int data = 43;
10     p = binsearch(a, 4, data);
11     printf("%p
", p);
12     system("pause");
13     return 0;
14 }
15 
16 int *binsearch(int *base, int len, int data)
17 {
18    int *low = base, *high = base + len;
19    int *mid = NULL;
20    
21    while(low < high)
22    {
23       mid = low + ((high - low) >> 1);
24       if(data < *mid)
25       {
26           high = mid;
27       }
28       else if(data > *mid)
29       {
30           low = mid + 1;//mid + 1 不是 mid
31       }
32       else
33       {
34           return mid;
35       }
36    }
37 
38    return NULL;
39 }
原文地址:https://www.cnblogs.com/hdu-2010/p/3237949.html