java 算法二分查找和折半查找
java算法二分查找与折半查找
折半查找:首先数组是已经排好序的
实例代码:
packagecom.hao.myrxjava;
/**
*折半查找:首先数组是已经排好序的
*
*@authorzhanghaohao
*@date2017/5/15
*/
publicclassHalfDivision{
/**
*循环实现
*
*@paramarray排好序的数组
*@paramvalue查找的值
*@returnvalue在array的位置
*/
publicstaticinthalfDivision(intvalue,int[]array){
if(array==null||array.length==0)
thrownewNullPointerException("arrayisnull");
intlow=0;
inthigh=array.length-1;
intmid=(low+high)/2;
while(array[mid]!=value){
if(array[mid]>value)
high=mid-1;
else
low=mid+1;
if(low>high)
return-1;
mid=(low+high)/2;
if(array[mid]==value)
returnmid;
}
returnmid;
}
/**
*递归实现
*
*@paramarray排好序的数组
*@paramvalue查找的值
*@paramlow查找的起始位置
*@paramhigh查找的末尾位置
*@returnvalue在array的位置
*/
publicstaticinthalfDivision(intvalue,int[]array,intlow,inthigh){
if(low>high)
return-1;
intmid=(low+high)/2;
if(array[mid]==value)
returnmid;
elseif(array[mid]>value)
returnhalfDivision(value,array,low,mid-1);
elseif(array[mid]
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!