码迷,mamicode.com
首页 > 其他好文 > 详细

包含重复元素的二分查找

时间:2018-05-30 01:21:21      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:sys   div   IV   length   ==   fir   out   one   print   

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

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;
    }
}

 

包含重复元素的二分查找

标签:sys   div   IV   length   ==   fir   out   one   print   

原文地址:https://www.cnblogs.com/xuhaojun/p/9108753.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!