二分法(在有序数组里,找满足>=value的最左位置)
在有序数组里,找满足>=value的最左位置
package practice01; //二分法(在有序数组里,找满足>=value的最左位置) public class demo05 { public static int nearestIndex(int[] sortedArr,int num){ if (sortedArr.length==0||sortedArr==null){ return 0; } int l=0; //左索引 int r=sortedArr.length-1; //右索引 int index=0; //声明并初始化 int mid=0; while (l<r){ //l~r至少有两个数时 mid=((r-l)>>1)+l; //(r+l)/2 if (sortedArr[mid]>=num){ index=mid; r=mid-1; }else { l=mid+1; } } return index; //返回索引位置 } public static void main(String[] args) { int[] sortedArr={1,2,2,2,3,4,4}; int i = nearestIndex(sortedArr, 4); System.out.println(i); } }