话不多说,先上代码 :

 public int  binarysearch (int []array,int value ){
        int begin =0;
        int end = array.length -1;
        while(begin <=end){
            int mid= begin +((end-begin)/2);
            if(array[mid]<value){
                begin = mid +1;
            }
            else if(array[mid]>value){
                end = mid -1;
            }
            else
                return mid;
        }
         return -1;
    }

 按最坏的情况查找顺序表的最后一个数,比如我们在一个顺序表中只有元素1和4两个数据那么 mid先是为1,再mid++得到4,一共需要进行两次循环;若顺序表中有四个元素4,7,9,12,那么第一次查找得到7,第二次得到9,第三次才能得到12;若有八个元素,则按代码逻辑需要循环查找4次。
在这里插入图片描述
设元素个数为 n ,查找次数为 a 则容易得到关系:

由此可知二分查找的时间复杂度为 log2n


版权声明:本文为qq_56070359原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_56070359/article/details/125377473