前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >每个程序员都应该知道的算法

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

作者头像
海拥
发布2021-08-23 17:52:29
5040
发布2021-08-23 17:52:29
举报
文章被收录于专栏:全栈技术全栈技术

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

介绍

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

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


线性搜索

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

在这里插入图片描述
在这里插入图片描述

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

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

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

何时使用:

  • 列表未排序时
  • 当清单很小的时候

二进制搜索

在计算机科学中,二进制搜索(也称为半间隔搜索,对数搜索或二进制chop)是一种搜索算法,用于查找排序数组中目标值的位置。二进制搜索将目标值与数组的中间元素进行比较。如果它们不相等,则消除目标不能位于其中的那一半,并在剩余的一半上继续搜索,再次使中间元素与目标值进行比较。

在这里插入图片描述
在这里插入图片描述

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

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

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

何时使用:

  • 列表排序时
  • 当清单很大时

深度优先搜索(DFS)

深度优先搜索(DFS)是用于遍历或搜索树或图形数据结构的算法。该算法从根节点开始(在图形的情况下,选择一些任意节点作为根节点),并在回溯之前尽可能沿着每个分支进行探索。

在这里插入图片描述
在这里插入图片描述

在DFS中,我们选择图,树或数据结构的根,然后按顺序浏览每个分支。选择一个分支后,它将在更改为另一个分支之前先浏览其所有子分支。

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

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

何时使用:

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

广度优先搜索(BFS)

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

在这里插入图片描述
在这里插入图片描述

在BSF中,与在DFS中一样,我们选择图,树或数据结构的根节点。在节点之后,我们移至其所有相邻节点,然后移至下一层,即与分支相邻的所有节点。

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

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

何时使用:

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

感谢您阅读本篇博客文章,希望您也喜欢。我很快将更新系列的下一部分。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-02-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 每个程序员都应该知道的算法
  • 介绍
    • 线性搜索
      • 二进制搜索
        • 深度优先搜索(DFS)
          • 广度优先搜索(BFS)
          相关产品与服务
          图数据库 KonisGraph
          图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档