您的位置:首页 > 其它

二分查找【模板】

2016-03-26 17:33 351 查看

一、递归版本

//有序数组递减排列
int  binarySearchRecusion(int* array,int len,int value){
if(len==0)
return -1;

int mid=(len-1)/2;
if(array[mid]==value)
return mid;
if(array[mid]>value)                        //在右半区
binarySearchRecusion(array+mid+1,len-mid-1,value);
else
binarySearchRecusion(array,mid,value);  //在左半区
}


二、非递归版本

//有序数组递减排列
int  binarySearch(int* array,int len,int value){
int mid=0;
int low=0;
int high=len-1;
while(low<=high){
mid=(low+high)/2;
if(array[mid]>value){       //在右半区
low=mid+1;
continue;
}
else if(array[mid]<value){  //在左半区
high=mid-1;
continue;
}else
return mid;             //找到
}
return -1;   //查找失败
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: