循环:
void BinaryChop(int arr[],int nBegin,int nEnd,int traget){
int mid;
if(arr == NULL || nBegin > nEnd) return -1;
while(nBegin <= nEnd){
mid = nBegin + (nEnd - nBegin)/2;//用偏移防止越界
if(arr[mid] == traget) return mid;
if(arr[mid] > traget){
nEnd = mid -1;
}else{
nBegin = mid + 1;
}
}
return -1;
}
递归:
void BinaryChop(int arr[],int nBegin,int nEnd,int traget)
{
int mid = nBegin + (nEnd - nBegin)/2;
if(arr == NULL || nBegin > nEnd) return -1;
if(arr[mid] == traget])
{
return mid;
}else if(arr[mid] > traget){
return BinaryChop(arr, nBegin, mid -1, traget)
}else{
return BinaryChop(arr, mid + 1, nEnd, traget)
}
}