1. 基本介绍 ```java
    2. 二分查找法只适用于从有序的数列中进行查找(比如数字和字母等),将数列排序后再进行查找

    3. 二分查找法的运行时间为对数时间O(㏒₂n) ,即查找到需要的目标位置最多只需要㏒₂n步

    4. 有递归实现和非递归实现 ```

    5. 递归实现

    6. 非递归实现 ```java package com.atguigu.algorithm;

    public class BinarySearch {

    1. public static void main(String[] args) {
    2. int[] array = {1,3, 8, 10, 11, 67, 100};
    3. int index = binarySearch(array, 1200);
    4. System.out.println("index=" + index);
    5. }
    6. /**
    7. * 如果找到返回对应下标,否则返回-1
    8. * 这个案例是针对升序排序的数组
    9. * @param array
    10. * @param target
    11. * @return
    12. */
    13. public static int binarySearch(int[] array, int target){
    14. int low =0;
    15. int hight=array.length-1;
    16. while(low<=hight){ //遍历还没结束
    17. int mid = (low+hight)/2; //取中间值mid点位置
    18. if(array[mid]==target){ //寻找到目标数
    19. return mid;
    20. }
    21. if(array[mid] > target){ //如果中间值大于目标数,则将highr点位置移动mid位置左边
    22. hight = mid-1;
    23. }
    24. if(array[mid] < target){ //如果中间值小于目标数,则将low点位置移动mid位置右边
    25. low = mid+1;
    26. }
    27. }
    28. return -1;
    29. }

    } ```