自己实现的js二分查找算法
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
function binarySearch(target, arr, start, end) {
if (!target || !(arr instanceof Array)) return;
var start = typeof start !== "number" ? 0 : start
var end = typeof end !== "number" ? arr.length - 1 : end
// var start = start || 0
// var end = end || arr.length-1
//这样的写法会报错,比如查找1,需要start,end都为0,如果end为0时 则会end又变成arr.length-1
if (start > end) return -1
var mid = Math.floor((end + start) / 2)
if (target == arr[mid]) return mid
if (target > arr[mid]) return arguments.callee(target, arr, mid + 1, end)
else return arguments.callee(target, arr, start, mid - 1)
}
//不存在
console.log(binarySearch(100, arr))
//存在
arr.forEach((item) => {
console.log(binarySearch(item, arr))
})