算法(第四版)读书笔记

使用JavaScript实现二分查找

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// 从给定数组中查找出指定元素的索引

let arr = [1,5,6,7,9,10]

function getCurrentIndex(arr,current) {
let newArr = [...arr]
// 1.数组需要有序
newArr.sort((a,b)=> a-b)
// 当前的索引
let cIndex = 0
// 区间的结束索引
let endIndex = newArr.length - 1
while(cIndex <= endIndex) {
let middleIndex = Math.floor((cIndex + endIndex) / 2)
// 如果目标值比中间值小,那就在左侧
if(current < newArr[middleIndex]) {
endIndex = middleIndex - 1
// 如果目标值比中间值大,那就在右侧
}else if(current > newArr[middleIndex]) {
cIndex = middleIndex + 1
// 如果相等,中间位置就是目标索引
}else {
return middleIndex
}
}
// 如果到最后也没有找到,说明数组中不包含该元素
return -1
}

getCurrentIndex(arr,5) // 1