顺序搜索
思路径
for循环遍历查找
代码实现
Array.prototype.sequentialSearch = function (n) { for (let i = 0; i < this.length; i++) { if (this[i] == n) { return i; } } return -1}const arr = [5, 4, 3, 2, 1];var result = arr.sequentialSearch(3)console.log('result', result)
时空复杂度
工夫: O(n)
空间: O(1) 没有应用额定的空间
二分搜寻
思路径
把数组折成两半
代码实现
Array.prototype.binarySearch = function (n) { let low = 0; let high = this.length - 1; while (low < high) { let mid = Math.floor((low + high) / 2) let midElement = this[mid] if (n > midElement) { low = mid + 1 } else if (n < midElement) { high = mid - 1 } else { return mid; } } return -1; } const arr = [5, 4, 3, 2, 1]; var result = arr.binarySearch(3) console.log('result', result)
时空复杂度
工夫: O(logN)
空间: O(1) 没有应用额定的空间