二分法?
先看一个很有意思的段子
有一天小明到图书馆借了 N 本书,出图书馆的时候,警报响了,于是保安把小明拦下,要检查一下哪本书没有登记出借。小明正准备把每一本书在报警器下过一下,以找出引发警报的书,但是保安露出不屑的眼神:你连二分查找都不会吗?于是保安把书分成两堆,让第一堆过一下报警器,报警器响;于是再把这堆书分成两堆…… 最终,检测了 logN 次之后,保安成功的找到了那本引起警报的书,露出了得意和嘲讽的笑容。于是小明背着剩下的书走了。 从此,图书馆丢了 N - 1 本书。
相信大家从小学的时候就已经接触过了很多关于二分法的题目了,对于二分法的一些思想这里博主就不展开说了
那么今天博主就从编程算法的角度来讨论,如果遇到二分法的题目该这么解答。
例题
首先我们要知道使用二分法是有一个条件的,那就是必须是顺序排序的,这个我们要注意。
public static void main(String[] args) {
int[] nums = {
-1, 0, 3, 5, 9, 12};
int target = 9;
int n = 9;
//调用如下方法
//数组查找
int i = search(nums,target);
System.out.println(i+1);
//错误版本号