包含重复元素的二分查找

Posted nichoo的博客

tags:

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

一般的二分查找只要求找到目标元素的位置,但是不保证该位置是否为该元素出现的第一个位置或者最后一个位置,现在想输出该元素第一次出现的位置:

public class BinarySearchFirstOne {
    public static void main(String[] args) {
        int[] arr = {1,2,3,3,3,4,5,5,6,7,7,7,8,9,9};
        int target = 7;
        
        System.out.println(search(arr, target));

    }
    public static int search(int[] arr, int target) {
        int lo = 0;
        int hi = arr.length - 1;
        int mid;
        while(lo < hi) {
            mid = (lo + hi) >> 1;
            if(arr[mid] < target) {
                lo = mid +1;
            }
            else
                hi = mid;
        }
        if(arr[lo] == target) {
            return lo;
        }
        else
            return -1;
    }
}

 

以上是关于包含重复元素的二分查找的主要内容,如果未能解决你的问题,请参考以下文章

异序二分查找 二分查找方程根 二分查找重复元素最后一个

可查找重复元素的二分查找算法

可查找重复元素的二分查找算法

二分法——二分查找的变种

二分查找算法,你真的了解吗?

算法-二分查找2