首页 > 其他 > 详细

二分查找

时间:2014-06-27 11:08:10      阅读:373      评论:0      收藏:0      [点我收藏+]
package foo;

import java.util.Arrays;

public class Main {
    
    /**
     * 二分查找
     * @param key 搜索的目标
     * */
    private static int binarySearch(int[] a, int fromIndex, int toIndex, int key) {
        int low = fromIndex;
        int high = toIndex - 1;
        int mid, midVal;
        while (low <= high) {
            mid = (low + high) >>> 1;
            midVal = a[mid];
            if (midVal < key)
                low = mid + 1;
            else if (midVal > key)
                high = mid - 1;
            else
                return mid; // key found
        }
        return -(low + 1);  // key not found.
    }
    
    public static void main(String[] args) throws Exception {
        int[] a = new int[]{1,2,3,4,5};
        System.out.println(binarySearch(a, 0, a.length, 0));
        System.out.println(binarySearch(a, 0, a.length, 1));
        System.out.println(binarySearch(a, 0, a.length, 2));
        System.out.println(binarySearch(a, 0, a.length, 3));
        System.out.println(binarySearch(a, 0, a.length, 4));
        System.out.println(binarySearch(a, 0, a.length, 5));
        System.out.println(binarySearch(a, 0, a.length, 6));
    }
}

折半查找法也称为二分查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务。优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。

二分查找,布布扣,bubuko.com

二分查找

原文:http://www.cnblogs.com/qrlozte/p/3810877.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!