算法-搜索
代码对比工具(性能对比):可以使用https://jsbench.me
对比新旧代码那种方式更好
一、线性/顺序 搜索
介绍:用每一个元素与需要查找的元素进行比较
代码如下(示例):
const arr = [1,2,3,4,5,6,7,8,9,10]
const lineSearch = (array, searchItem) => {
for (var i=0; i<array.length; i++){
if (searchItem === array[i]){
return i;
}
}
return -1;
};
lineSearch(arr, 8);
二、二分搜索
介绍:1.必须是已排序的数据, 2. 取中间值, 如果要查找的元素大于中间值, 在右边搜索,如果小于中间值,在左边搜索。
代码如下(示例):
const arr = [1,2,3,4,5,6,7,8,9,10]
const binarySearch = (array, item) => {
let low = 0;
let leng = array.length - 1;
while (low <= leng) {
const middle = Math.floor((low + leng) / 2);
const element = array[middle];
if (element < item) {
low = middle + 1;
} else if (element > item) {
leng= middle - 1;
} else {
return middle;
}
}
return -1
}
binarySearch(arr, 8)
# 测试性能结果
结论:20以内的数据使用线性搜索,大量数据使用二分搜索。