二分查找

来源:互联网 发布:mac鼠标滚轮 编辑:程序博客网 时间:2024/06/06 02:18
package lihongmin;public class BinarySearch {/** * 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难(一般直接插入头或尾部即可,但是现在需要按顺序进行插入)。 * 因此,折半查找方法适用于不经常变动而查找频繁的有序列表。 * 二分查找一般有两种方式,递归或者循环中执行 * @param srcArray需要查找的数组 * @param des需要查找的元素 * @return(若元素存在则返回数组下标,否则返回-1) */public static int binarySearch(Integer[] srcArray, int des) {    int low = 0;    int high = srcArray.length - 1;     while ((low <= high) && (low <= srcArray.length - 1) && (high <= srcArray.length - 1)) {        int middle = (high + low) >> 1;        if (des == srcArray[middle]) {            return middle;        } else if (des < srcArray[middle]) {            high = middle - 1;        } else {            low = middle + 1;        }    }    return -1;}public static void main(String[] args) {Integer[] arr = new Integer[]{1,6,36,363,2555,7777,29449};int binarySearch = binarySearch(arr,6);System.out.println(binarySearch);}}