搜索算法

顺序搜索

顺序或线性搜索是最基本的搜索算法。它的机制是,将每一个数据结构中的元素和我们要找的元素做比较。顺序搜索是最低效的一种搜索算法。

以下是其实现:
// 定义顺序搜索函数
this.sequentialSearch = function(item){
  // 遍历整个数组
  for (var i=0; i < array.length; i++){ 
    // 如果数组中的当前元素与搜索的项相同
    if (item === array[i]) 
      return i; // 返回元素的索引
  }
  return -1; // 如果未找到则返回-1
};

顺序搜索迭代整个数组,并将每个数组元素和搜索项作比较。如果搜索到了,算法将用返回值来标示搜索成功。

二分搜索

二分搜索算法的原理和猜数字游戏类似,就是那个有人说“我正想着一个1到100的数字”的游戏。我们每回应一个数字,那个人就会说这个数字是高了、低了还是对了。

这个算法要求被搜索的数据结构已排序。以下是该算法遵循的步骤。
(1) 选择数组的中间值。
(2) 如果选中值是待搜索值,那么算法执行完毕(值找到了)。
(3) 如果待搜索值比选中值要小,则返回步骤1并在选中值左边的子数组中寻找。
(4) 如果待搜索值比选中值要大,则返回步骤1并在选种值右边的子数组中寻找。

以下是其实现:
// 定义二分搜索函数
this.binarySearch = function(item){
  this.quickSort(); // 开始前先对数组进行排序
  var low = 0, // 定义低指针
      high = array.length - 1, // 定义高指针
      mid, element;

  // 当低指针小于等于高指针时,执行循环
  while (low <= high){ 
    mid = Math.floor((low + high) / 2); // 计算中间索引
    element = array[mid]; // 获取中间元素的值
    if (element < item) { // 如果中间元素的值小于搜索的值
      low = mid + 1; // 更新低指针
    } else if (element > item) { // 如果中间元素的值大于搜索的值
      high = mid - 1; // 更新高指针
    } else {
      return mid; // 返回中间元素的索引
    }
  }
  return -1; // 如果未找到则返回-1
};
    

posted on   完美前端  阅读(393)  评论(0编辑  收藏  举报

编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示