二分查找(折半查找),针对有序排序,就是先查找最中间的数据,根据结果淘汰另一半。
本例是针对数组升序排列的情况写的方法。
新手上路。
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; } }