@Author:云都小生
概述
二分算法是一种查找算法,又称折半查找法,是 分治思想的具体实现。从一个有序列表中,找到的某个关键字,效率肯定要比遍历法高很多。
遍历法的时间复杂度是O(n),二分查找算法的时间复杂度是O(lgn)。
算法是这样的,给定一个有序数列a {1,2,13,23,55}
如果我们想查找数据23,就先0+a.length/2(折半) = 2;
比较一下a[2] == 23,如果是就返回下标,如果不是就再比较a[2]是否大于23,如果大,我们就从前半段查找,反之则从后半段开始。看图:
代码实现
在看代码之前,请保证你能懂递归思想。
public class Bsearch {
public static void main(String[] args){
int[] nums = new int[]{1,3,4,55,66,123};
int date = 1;
int index = search(nums,0,nums.length,date);
if(index != -1)
{
System.out.println("查到了,下标是:" + index);
}
else