二分查找(折半查找),针对有序排序,就是先查找最中间的数据,根据结果淘汰另一半。
本例是针对数组升序排列的情况写的方法。
新手上路。
public class BinarySearch {
/**
* 二分查找,返回查找数字的索引,若未找到,则返回-1
* @param arr 数组
* @param num 需要查找的数字
* @return
*/
public static int binarySearchMethod(Integer[] arr,int num){
//其实索引
int low = 0;
//最高索引
int high = arr.length-1;
while((low<=high)&&(low<arr.length-1)
&&(high<=arr.length-1)){
int mod = (low+high)/2;
//如果中间索引是需要查找的数,则返回索引。
if(arr[mod] == num){
return mod;
}else if(arr[mod] > num){
high = mod-1;
}else{
low=mod+1;
}
}
return -1;
}
}