包含重復元素的二分查找
阿新 • • 發佈:2018-05-30
bsp binary 第一次 pre public 二分查找 nbsp [] 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)); } publicstatic 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; } }
包含重復元素的二分查找