js 搜索查找算法
- 线性查找
线性查找是最简单的一种查找算法,它的基本思想是从头到尾遍历待查找的数据集,找到对应的元素,时间复杂度为O(n)。
代码实现:
function linearSearch(arr, target){
for(let i = 0; i < arr.length; i++){
if(arr[i] === target){
return i;
}
}
return -1;
}
- 二分查找
二分查找也称为折半查找,它的基本思想是先将数据集排序,然后将数据集从中间分成两部分,如果待查找的元素小于中间值,则在左半部分继续查找,否则在右半部分继续查找,直到找到该元素或者确定该元素不存在,时间复杂度为O(logn)。
代码实现:
function binarySearch(arr, target){
let low = 0;
let high = arr.length - 1;
while(low <= high){
let mid = Math.floor((low + high) / 2);
if(target === arr[mid]){
return mid;
} else if(target < arr[mid]){
high = mid - 1;
} else {
low = mid + 1;
}
}
return -1;
}
- 哈希查找
哈希查找又称为散列查找,它的基本思想是通过哈希函数把待查找的元素映射成一个唯一的索引值,然后在该索引位置查找该元素,如果该元素不存在,返回-1。哈希查找的时间复杂度一般为O(1),但在处理哈希冲突时可能会退化为O(n)。
代码实现:
function hashSearch(arr, target){
let hashTable = new Map();
for(let i = 0; i < arr.length; i++){
hashTable.set(arr[i], i);
}
if(hashTable.has(target)){
return hashTable.get(target);
} else {
return -1;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~