码迷,mamicode.com
首页 > 其他好文 > 详细

折半查找

时间:2018-02-04 13:55:52      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:void   search   value   pre   index   sea   stat   折半查找   out   


---------------------------------------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);
        }
    }

}

 

 

 

 

 

折半查找

标签:void   search   value   pre   index   sea   stat   折半查找   out   

原文地址:https://www.cnblogs.com/gzhli/p/8412966.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!