【JS 常用查找算法】

1. 线性查找

线性查找是最简单的一种查找算法,它的基本思想是从头到尾遍历待查找的数据集,找到对应的元素,时间复杂度为O(n)。

代码实现:

function linearSearch(arr, target){
    
    
  for(let i = 0; i < arr.length; i++){
    
    
    if(arr[i] === target){
    
    
      return i;
    }
  }
  return -1;
}

2. 二分查找

二分查找也称为折半查找,它的基本思想是先将数据集排序,然后将数据集从中间分成两部分,如果待查找的元素小于中间值,则在左半部分继续查找,否则在右半部分继续查找,直到找到该元素或者确定该元素不存在,时间复杂度为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;
}

3. 哈希查找

哈希查找又称为散列查找,它的基本思想是通过哈希函数把待查找的元素映射成一个唯一的索引值,然后在该索引位置查找该元素,如果该元素不存在,返回-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;
  }
}

猜你喜欢

转载自blog.csdn.net/Ge_Daye/article/details/132237121
今日推荐