首页 > 其他 > 详细

二分查找

时间:2020-06-20 16:38:46      阅读:78      评论:0      收藏:0      [点我收藏+]

package com.sly.uploadfile.algorithm.pack1;

import java.util.Arrays;

/**
 * Created by fmgao on 2019/9/25.
 * <p>
 * Java语言二分查找代码实现
 */
public class ErFenChaZhao {

    /**
     * 二分查找key值对应的下标
     *
     * @param source 输入的源数组 ,请保证为一个有序数组
     * @param key    需要查找的值
     * @return 正数为查找到的坐标,-1表示没有查到
     */
    public static int binarySearch(int[] source, int key) {
        int low = 0;
        int high = source.length - 1;
        while (low <= high) {
            int mid = (low + high) >>> 1; //使用位移运算法高效地获取折中下标,这里不考虑符号,所以使用>>>
            int midVal = source[mid];
            if (midVal < key) {
                low = mid + 1;
            } else if (midVal > key) {
                high = mid - 1;
            } else
                return mid;
        }
        return -1;
    }

    public static void main(String[] args) {
        int[] source = new int[]{12, 213, 232, 343, 123, -1, 123, 232424, 1253, 56, 456, 234, -2342};
        //保证数组为有序数组
        Arrays.sort(source);
        //打印排序后的数组元素
        System.out.print("Sorted Source : ");
        for (int i = 0; i < source.length; i++) {
            System.out.print(source[i] + " ");
        }
        System.out.println();
        System.out.println(binarySearch(source, 56));
    }

}

二分查找

原文:https://www.cnblogs.com/fmgao-technology/p/13169139.html

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