跟大家一起每天进步一丢丢,在学习的路途上不掉队。
[ 经典题 ]
let a = a;在运行时,会出现什么问题?为什么?
谈谈var与let、const区别?
- 试题参考答案跟第二天试题一起更新。
- 希望大家积极参与和讨论。
使用二分查找检索数值,参考答案:
const binarySearch = (arr, value) => {
const len = arr.length;
const isEqual = (a, b) => [a].includes(b);
if (len === 0) return false;
if (len === 1) return isEqual(arr[0], value);
const midIndex = Math.floor(len / 2),
minValue = arr[0],
maxValue = arr[len - 1],
midValue = arr[midIndex];
// 若是比最小值要小或比最大值要大,则返回false
if (value < minValue || value > maxValue) return false;
// 若是等于中间值,则返回true
if (isEqual(value, midValue)) return true;
// 否则继续二分查找
const [start, end] = value > midValue ? [midIndex + 1, len] : [0, midIndex];
const newSearchArr = arr.slice(start, end);
return binarySearch(newSearchArr, value);
};
const arr = [0, 2, 4, 6, 9, 21, 45, 78];
console.log(binarySearch(arr, 6)); // true
console.log(binarySearch(arr, 5)); // false
code execute result:
专注于原创短更,便于碎片化涉猎知识。希望我走过的路,留下的痕迹,能对你有所启发和帮助。
转发请注明原处,平台投稿请私信。