用途: 对有序数组的查找
思路: 将有序数组分为两部分,用其中位数与目标数进行比较
- 若不相等,则在有可能存在目标数的区间内再进行二分、比较中位数和目标数
- 中位数与目标数相等:输出索引值
代码实例:
function search (arr,target) {
let start = 0
let end = arr.length - 1
while (start <= end) {
let middle = Math.floor((start + end)/2)
let maybe = arr[middle]
if (maybe == target) {
return middle
}
if (maybe > target) {
end = middle - 1
} else {
start = middle + 1 // 排除掉已比较过的arr[middle]
}
}
return -1;
}
var list = [1,2,3,4,5,6,7,8,9,10];
let result = search(list,10)