二分查找(两种)

Posted ohana!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二分查找(两种)相关的知识,希望对你有一定的参考价值。

在二分查找中,有一个关键点,就是关于传入方法当中的数组长度是否-1,其影响在代码编写过程中的边界问题

1.数组长度 - 1 

public static int binarySearch(int[] array,int n){
        int left = 0;
        int right = array.length - 1;
        while(left <= right){
            int mid = (left + right) / 2;
            if (array[mid] == n){
                return mid;
            }else if (array[mid] < n){
                left = mid + 1;
            }else{
                right = mid - 1;
            }
        }
        return -1;
    }
 public static void main(String[] args) {
        int[] arr = {1,2,3,4,5,6,7,8,9};
        int ret = binarySearch(arr,5);
        System.out.println(ret);
    }

运行结果:

 2.数组长度不 - 1

public static int binarySearch2(int[] array,int n){
        int left = 0;
        int right = array.length;
        while(left < right){
            int mid = (left + right) / 2;
            if (array[mid] == n){
                return mid;
            }else if (array[mid] < n){
                left = mid + 1;
            }else{
                right = mid;
            }
        }
        return -1;
    }
    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5,6,7,8,9};
        int ret = binarySearch2(arr,1);
        System.out.println(ret);
    }

运行结果:

 

以上是关于二分查找(两种)的主要内容,如果未能解决你的问题,请参考以下文章

基础算法模板之二分

「算法笔记」一文摸秃二分查找

二分查找的代码实现

二分查找和快速排序(理论+代码)

查找2-二分查找

二分查找的两种实现方式