- 前提排列好的数组里面查询一个值n的位置
- 先找中间的值,如果中间的值与其相等,在返回当前index
- 如果小于(或大于)中间的值,则将左边(右边)所以的值分为两份按照步骤1开始循环。
https://jsbin.com/lehoxehoda/1/edit?js,console
const binarySearch = (a, n, start, end) => {if (start === end) return -1;const middle = Math.floor((start + end) / 2);if (a[middle] === n) {return middle;} else if (a[middle] < n) {return binarySearch(a, n, middle, end);} else {return binarySearch(a, n, start, middle );}}const a = [1, 2, 4, 9, 10, 12, 20];console.log(binarySearch(a, 0, 0, a.length))console.log(binarySearch(a, 10, 0, a.length))
