#include<stdio.h>
int *dichotomy(int *a,int num,int flag){
int *low = a;
int *heigh = a+num;
int *mid = NULL;
while(low < heigh){
mid = low + (heigh-low)/2;
if((*mid) == flag){
return mid;
}
else if((*mid) > flag){
heigh = mid;
}else{
low = mid;
}
}
return NULL;
}
int main(void){
int a[6] = {1,2,3,4,5};
int *p = dichotomy(a,5,5);
printf("%d\n",*p);
}
C 语言中指针相加是被禁止的,所以要求中点 mid 时,只能用相减两指针相减得到他的个数,然后再和 low 相加。