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 }