每个程序员都应该知道的算法简介最后的注释

2025-05-27

每个程序员都应该知道的算法

介绍

最后说明

介绍

大家好,今天我将开始一个名为“每个程序员都应该知道的算法”的系列文章。在这个系列中,我们将研究各种算法,例如搜索、排序、图形、数组等。

今天从搜索算法系列的第一部分开始。我们将探讨每个程序员都应该知道的四种搜索算法。现在,我们开始吧。


线性搜索

在计算机科学中,线性搜索或顺序搜索是一种在列表中查找元素的方法。它按顺序检查列表中的每个元素,直到找到匹配项或搜索完整个列表。

线性搜索

在线性搜索中,我们按照从列表的第一个元素到最后一个元素的顺序逐个搜索列表中的目标元素。

最佳情况:目标值位于列表的第一位

最坏情况:目标值是列表的最后一个位置

何时使用:

  • 当列表未排序时
  • 当列表很小时

二分查找

在计算机科学中,二分查找(也称为半区间查找、对数查找或二分截取)是一种在有序数组中查找目标值位置的搜索算法。二分查找将目标值与数组的中间元素进行比较。如果它们不相等,则排除目标值不在其中的那一半,然后继续查找剩下的那一半,再次将中间元素与目标值进行比较。

二分查找

在二分查找中,列表必须按某种顺序排列。我们通过从列表中间选取一个值并进行比较来查找目标值。如果不匹配,则如果目标值小于中间元素,则丢弃起始一半,否则丢弃终止一半。该过程将持续进行,直到找到目标值。

最佳情况:目标值位于列表的中间位置

最坏情况:目标值位于列表的第一个或最后一个位置

何时使用:

  • 当列表排序后
  • 当列表很大时

深度优先搜索(DFS)

深度优先搜索 (DFS) 是一种用于遍历或搜索树状或图状数据结构的算法。该算法从根节点开始(对于图,选择任意节点作为根节点),并沿着每个分支尽可能远地进行探索,然后再回溯。

深度优先搜索(DFS)

在深度优先搜索 (DFS) 中,我们选择图、树或数据结构的根节点,并按顺序探索每个分支。选定一个分支后,它会先探索其所有子分支,然后再切换到另一个分支。

最佳情况:目标值位于树的根位置

最坏情况:目标值位于最后一个有序分支的子分支的尖端

何时使用:

  • 当树很宽时
  • 当目标值位于树的深处时

广度优先搜索(BFS)

广度优先搜索 (BFS) 是一种用于遍历或搜索树或图数据结构的算法。它从树根(或图中的某个任意节点,有时称为“搜索键”)开始,先探索当前深度的所有邻居节点,然后再移至下一个深度的节点。

广度优先搜索(BFS)

在 BSF 中,与 DFS 类似,我们选择图、树或数据结构的根节点。找到一个节点后,我们移动到该节点的所有相邻节点,然后移动到下一级,即与该分支相邻的所有节点。

最佳情况:目标值位于树的根位置

最坏情况:目标值位于树最长分支的顶端

何时使用:

  • 当目标值距离树根不远时
  • 当树很深,并且目标值很少时。

最后说明

感谢您阅读这篇博文,希望您也喜欢。我很快会带着本系列的下一篇回来。

文章来源:https://dev.to/surajondev/algorithms-every-programmer-should-know-part-1-searching-algorithm-1hd3
PREV
面向 Web 开发者的优秀 GitHub 代码库 - 第二部分 简介 ryanmcdermott/clean-code-javascript yangshun/tech-interview-handbook you-dont-need/You-Dont-Need thedaviddias/Front-End-Checklist codecrafters-io/build-your-own-x 与我联系 结论
NEXT
50+ 款优秀的 Web 开发者工具 简介 免费 GumRoad 电子书 Devhints Brackets UI 设计 每日错误 404 Hover.css Tailwind CSS Railway JSONVue Flexbox Defence Habitica 与我联系 结论