线性查找
function LinerSearch(arr, target) {let position &#61; -1;let len &#61; arr.length;for (let i &#61; 0; i < len; i&#43;&#43;) {if (arr[i] &#61;&#61;&#61; target) {position &#61; i;return position;}}return position;
}console.log(&#39;LinerSearch&#39;, LinerSearch([4, 18, 5, 2, 9, 2], 9))
二分查找
function binarysearch(arr, target) {if (Array.isArray(arr)) {let len &#61; arr.length; let maxIndex &#61; len - 1;let minIndex &#61; 0;while (minIndex <&#61; maxIndex) {let midIndex &#61; Math.floor((maxIndex &#43; minIndex) / 2); if (target < arr[midIndex]) {maxIndex &#61; midIndex - 1;} else if (target > arr[midIndex]) {minIndex &#61; midIndex &#43; 1} else if (target &#61;&#61;&#61; arr[midIndex]) {return arr[midIndex]}}return -1;}
}console.log(&#39;binarysearch&#39;, binarysearch([3, 6, 7, 15, 18, 19], 6));
二分查找递归实现
function recursionBinarySearch(arr, target, minIndex, maxIndex) {if (Array.isArray(arr)) {let len &#61; arr.length;let max &#61; maxIndex || len - 1;let min &#61; minIndex || 0;let midIndex &#61; Math.floor((max &#43; min) / 2)if (min > max) {return -1; }if (target > arr[midIndex]) {min &#61; midIndex &#43; 1return recursionBinarySearch(arr, target, min, max)} else if (target < arr[midIndex]) {max &#61; midIndex - 1return recursionBinarySearch(arr, target, min, max)} else if (target &#61;&#61;&#61; arr[midIndex]) {return midIndex}}
}console.log(&#39;recursionBinarySearch&#39;, recursionBinarySearch([3, 6, 7, 15, 18, 19], 7))