数值数组中的二分查找



我有一个排序数组,第一个值总是等于或大于1,我需要找到最左边的元素的索引,等于或大于N

[1, 3, 3, 4, 5, 7, 11, 11, 12, 15]

我需要的是一个找到期望元素的递归二进制搜索函数,因此在示例中,当N等于11时,它返回6作为输出。

已编辑!

好了,现在我被问到这个问题了,我之前的回答是因为没有很好地阅读这个问题。答案并不比以前复杂多少。注意:如果没有值>= n, index将为-1,否则您将获得排序数组中第一个满足值的索引>= n。

var n = 11;
var idx = [1, 3, 3, 4, 5, 7, 11, 11, 12, 15].findIndex(each => each >= n);
console.log('idx = '+idx);

一个简单的for循环就可以达到这个目的,正如在这个函数中是如何实现的。

let arr=[1, 3, 3, 4, 5, 7, 11, 11, 12, 15]; // Array you want to test
let n=11; // Number to be n
function getVal(a,num){
for(let i=0;i<a.length;++i){
if(a[i]>=num)return i; // Look for val that's >= n.
}
}
getVal(arr,n);

相关内容

  • 没有找到相关文章

最新更新