zoukankan      html  css  js  c++  java
  • 【Algorithm】二分查找(递归实现)

    二分查找(递归实现),Java 代码如下:

    public class BinarySearch {
        public static int rank(int key, int[] a) {
            return rank(key, a, 0, a.length-1);
        }
        
        private static int rank(int key, int[] a, int lo, int hi) {
            // 如果 key 存在于 a[] 中,它的索引不会小于 lo 且不会大于 hi
            
            if (lo > hi)
                return -1;
            int mid = lo + (hi - lo) / 2;
            if (key < a[mid])
                return rank(key, a, lo, mid-1);
            else if (key > a[mid])
                return rank(key, a, mid+1, hi);
            else
                return mid;
        }
    
        public static void main(String[] args) {
            int[] arr = {1, 2, 3, 9, 17, 25, 34, 52, 91};
            System.out.println("arr length: " + arr.length);
            System.out.println(rank(9, arr));
        }
    }

    注意:进行二分查找的表或数组是有序的。

    From: 《算法》

    PS: 自己在算法方面太弱了,基本是零基础,而且一看到算法首先想到的就是逃避……一定要克服这个观念,一点点突破!

  • 相关阅读:
    闭包和this
    闭包与变量
    闭包
    ES6扩展运算符的几个小技巧
    js对象的深拷贝
    js获取当前点击元素的索引
    前端学习指北
    css实现心形图案
    this 知多少
    js数字进制转换
  • 原文地址:https://www.cnblogs.com/jaxer/p/5322915.html
Copyright © 2011-2022 走看看