- 基本介绍 ```java
二分查找法只适用于从有序的数列中进行查找(比如数字和字母等),将数列排序后再进行查找
二分查找法的运行时间为对数时间O(㏒₂n) ,即查找到需要的目标位置最多只需要㏒₂n步
有递归实现和非递归实现 ```
递归实现
- 非递归实现 ```java package com.atguigu.algorithm;
public class BinarySearch {
public static void main(String[] args) {
int[] array = {1,3, 8, 10, 11, 67, 100};
int index = binarySearch(array, 1200);
System.out.println("index=" + index);
}
/**
* 如果找到返回对应下标,否则返回-1
* 这个案例是针对升序排序的数组
* @param array
* @param target
* @return
*/
public static int binarySearch(int[] array, int target){
int low =0;
int hight=array.length-1;
while(low<=hight){ //遍历还没结束
int mid = (low+hight)/2; //取中间值mid点位置
if(array[mid]==target){ //寻找到目标数
return mid;
}
if(array[mid] > target){ //如果中间值大于目标数,则将highr点位置移动mid位置左边
hight = mid-1;
}
if(array[mid] < target){ //如果中间值小于目标数,则将low点位置移动mid位置右边
low = mid+1;
}
}
return -1;
}
} ```