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]感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!