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

二分查找

时间:2019-04-09 09:21:34      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:之间   ref   @param   param   stat   pre   数组   .so   while   

二分查找
package com.zgz;

import java.lang.reflect.Array;
import java.util.Arrays;

/**
 * 二分查找
 * 
 * @author guozhenZhao
 * @date 2019年4月8日
 */
public class BinarySearch {

    /**
     * 要查找的数组必须是有序的
     * @param key
     * @param arr
     * @return
     */
    public static int rank(int key, int[] arr) {
        int lo = 0;
        int hi = arr.length - 1;
        //被查找的键存在于arr[lo]-arr[hi]之间
        while (lo <= hi) {
            int mid = lo + (hi - lo) / 2;
            if (key < arr[mid])
                hi = mid - 1;
            if (key > arr[mid])
                lo = mid + 1;
            else
                return mid;

        }
        return -1;
    }

    public static void main(String[] args) {
        int[] whiteList = {2,4,5,3,8,9,7,6};
        Arrays.sort(whiteList);
        int key = 10;
        System.out.println(rank(key, whiteList));
    }

}

二分查找

标签:之间   ref   @param   param   stat   pre   数组   .so   while   

原文地址:https://blog.51cto.com/13416247/2375431

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