给定一个排序数组和一个目标值
- 在数组中找到目标值,并返回其索引
- 如果目标值不存在于数组中,返回它将会按顺序插入的位置
eg:输入[1,3,5,6],5
输出:2
输入[1,3,5,6],2
输出:1
输入[1,3,5,6],7
输出:4
方法1:for
循环遍历;
时间复杂度:O(n)
function findTheInsert(arr, value) {
for (let i = 0; i < arr.length; i++) {
if (arr[i] >= value) {
return i
}
}
return arr.length
}
let arr = [1, 3, 5, 6]
let value1 = 2
console.log(findTheInsert(arr, value1))
方法2:二分查找;
时间复杂度:O(logn)
function binarySearch(arr, value) {
let minIndex = 0
let maxIndex = arr.length - 1
let middleValue
while (minIndex <= maxIndex) {
let middleIndex = Math.floor((minIndex + maxIndex) / 2)
middleValue = arr[middleIndex]
if (value < middleValue) {
maxIndex = middleIndex - 1
} else if (value > middleValue) {
minIndex = middleIndex + 1
} else {
return middleIndex
}
}
return minIndex
}
let arr = [1, 3, 5, 6]
let value1 = 2
console.log(binarySearch(arr, value1))
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。