概念
问题描述
给定 n 个元素,这些元素是有序的(假定为升序),从中查找特定元素 x 。
算法思想
将有序序列分解为规模大致相等的两部分,然后取中间元素与特定元素进行比较,如果与中间元素相等,则查找成功,算法终止;如果比中间元素小,则在序列的前半部分查找(重复分解并查找的操作);否则,在序列的后半部分查找(重复分解并查找的操作)。
图解
代码实现
Clojure:
1 | (defn binary-search [items x] |
Java:
1 | public int rank(int[] a, int k) { |
参考文档
《趣学算法》