- 基本介绍 ```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;}
} ```
