下面是递归的方法:
#include<stdio.h>
int binary_search(int array[],int start_p,int end_p,int value)
{
int middle = -1;
int position = -1;
int tmp_position = -1;
if(start_p < end_p)
{
middle = (start_p+end_p)/2;
if(array[middle] == value)
{
position = middle;
tmp_position = position - 1;
while(tmp_position >=0 && array[tmp_position] == array[position])
{
position = tmp_position;
tmp_position --;
}
return position;
}
else if(array[middle] < value)
{
return binary_search(array, middle+1,end_p,value);
}
else if(array[middle] > value)
{
return binary_search(array, start_p, middle,value);
}
}
else if(start_p &