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