折半查找


---------------------------------------1.折半查询--------------------------------------------------

public
class banzhe { /* * 寻找排好序的数组中的一个值(不是排好序的用不了) * * @param array要查找的数组 * * @param value查找的值 * * @param left左边界,这个值必须位于数组长度区间内 * * @param right右边界,这个值必须位于数组长度区间内 0return找到的值在数组中的位置,如果没找到就返回-1 */ static int binarySearch(int[] array, int value, int left, int right) { if (left > right) {// 退出条件 return -1;// "没找到指定的元素 } int middle = (left + right) >>> 1; // 相当于mid = (left+right) /2 if (array[middle] == value) { System.out.println("middle=" + middle); System.out.println("array[middle]=" + array[middle]); return middle; // 找到了 } else if (array[middle] > value) { return binarySearch(array, value, left, middle - 1); }// 递归调用查找左边 else { return binarySearch(array, value, middle + 1, right); }// 递归调用查找右边 } public static void main(String[] args) { int[] data = { 3, 4, 5, 6, 7 }; System.out.println(data.length); // 调用binarySearch方法,其中left的初始值是0,right的初始值是数组长度 int ret = binarySearch(data, 6, 0, data.length); System.out.println(ret);// "输出3 } }
---------------------------------------2.动态折半查询--------------------------------------------------
public class dongtaibanzhe {
    //要查找动态数组中已经排好序的元素,可以直接调用Collections.binarySearch方法。
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<Integer>();
        //增加一些整数
        list.add(3);
        list.add(7);
        list.add(6);
        list.add(9);
        //在调用binarySearch ()方法之前,先对集合中的元素排序
        Collections.sort(list);
        //得到元素2所在的位置,如果没有找到,就返回一个负数
        int index = Collections.binarySearch(list, 3);
        if (index >=0) {
        System.out.println("找的位置:"+index);
        }
    }

}
---------------------------------3.动态折半查询-----------------------------------------------
public class dongtaibanzhe {
    //要查找动态数组中已经排好序的元素,可以直接调用Collections.binarySearch方法。
    public static void main(String[] args) {
        int[] ids = {3,7,6,9}; //待查找的数组
        Arrays.sort(ids);
        int index = Arrays.binarySearch(ids,3);
        if (index >= 0) {
        System.out.println("n找到的位置:"+ index);
        }
    }

}

 

 

 

 

 

posted @ 2018-02-04 13:00  Leegz  阅读(113)  评论(0编辑  收藏  举报