搜索算法
顺序搜索
又称线性搜索,一个个顺序查找,找到了返回索引,否则返回未找到信息。是最低效的查找方式。
const DOES_NOT_EXIST =-1;
function sequerialSearch(arr, target) {
for (let i = 0; i < arr.length; i++) {
if (target === arr[i]) {
return i
}
}
return DOES_NOT_EXIST;
}
二分查找
1.一头一尾2.确定中值3.两头比较,在哪边就把相应头尾指针移过来
function binarySearch(arr, target) {
const sortArr = arr.sort();
let left = 0;
let right = arr.length - 1;
while (left <= right && target >= arr[left] && target <= arr[right]) {
const mid = Math.floor((left + right) / 2);
if (target > arr[mid]) {
left = mid + 1;
} else if (target < arr[mid]) {
right = mid - 1;
} else {
return mid;
}
}
return DOES_NOT_EXIST;
}