二分法(java)

   最先接触到算法神奇之处的就是二分法,所以打算动手写一下,并整理思路

  代码

package com.example.eurekaribbonclient.test;

/**
 * @ClassName test_3
 * @Description TODO
 * @Author Mr.G
 * @Date 2018/9/18 17:47
 * @Version 1.0
 */
public class test_3 {
    public static void main(String[] args){
        int[] arry={1,3,6,8,9,10,11,35,54,77,102};
        int flag=BinarySearch(54,arry);
        System.out.println(flag);
    }
    public static int BinarySearch(int key,int[] arry){
        int left=0;
        int right=arry.length-1;
        while(leftarry[mid]){
                left=mid+1;
            }else{
                return mid;
            }
        }
        return -1;
    }
}

代码很简单,思路就是不断取中间值,和key比较,然后用递归的思想不断推进,直到找到结果,如果没找到,就返回-1;

最差情况,是取log2N次此时时间复杂度是o(logn),最好的情况当然是一次取到,注意,二分法是对一组有序的数,如果是无序的需要先排序

你可能感兴趣的:(算法与数据结构)