获取有序数组中第一个大于等于目标值的索引
所属分类 java
浏览量 446
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引
如果目标值不存在于数组中,返回它将会被按顺序插入的位置
如何获取有序数组中第一个大于等于目标值的位置索引
有序数组的二分查找
int searchInsertIndex(double[] arr,double value)
arr 有序数组 存在重复值
方法接受两个参数,有序数组和指定元素,通过二分查找法,获取数组中第一个大于等于指定元素的索引位置。
public static int searchInsertIndex(double[] arr,double value){
if(arr == null || arr.length <=0){
return 0;
}
int low = 0;
int high = arr.length - 1;
while(low <= high){
int mid = low + (high-low) /2 ;
if(arr[mid] < value){
low = mid + 1;
}else{
if(mid == 0 || arr[mid-1] < value){
return mid;
}else{
high = mid -1;
}
}
}
return arr.length;
}
double[] arr = {1,1,2,3,3,5,6,7,8};
// 0
searchInsertIndex(arr,1);
// 9
searchInsertIndex(arr,9);
// 3
searchInsertIndex(arr,2.1);
// 3
searchInsertIndex(arr,3);
// 5
searchInsertIndex(arr,3.1);
上一篇
下一篇
提问的艺术
mysql JDBC rewriteBatchedStatements
spring 组件类名相同 bean name冲突
异常值检测的两种常用方法
好习惯之预习
小学生的一些好习惯