跳转到主要内容
Chinese, Simplified

你好,我是理查德。我是一名开发人员,你应该知道我不是数据结构和算法的忠实粉丝。如果你能理解这一点,别担心;在从事过很多项目(大大小小的)之后,我发现了每个开发人员都应该知道的六种重要算法,而这六种算法几乎总能解决您开发过程中的每一个问题。
那 6 个重要的算法是什么?


1.排序算法:


到底什么是排序?- 它是排列列表中项目顺序的算法。
重要的排序算法——

  • 冒泡排序:冒泡排序是最基本的排序算法,如果相邻元素无序,它会通过重复交换相邻元素来工作。
  • 合并排序:合并排序是一种使用分治策略的排序技术。
  • 快速排序:快速排序是一种流行的排序算法,在对包含 n 个元素的数组进行排序时,平均执行 n log n 次比较。它是一种更高效、更快的排序算法。
  • 堆排序:堆排序通过将数组元素可视化为一种特殊类型的完整二叉树(称为堆)来工作。


2. 搜索算法:


究竟是什么搜索?- 它是在数据集中找到元素的算法。
重要的搜索算法——

  • 二分搜索:二分搜索采用分而治之的策略,其中一个排序列表被分成两半,并将项目与列表的中间元素进行比较。如果找到匹配项,则返回中间元素的位置。
  • 广度优先搜索(BFS):广度优先搜索是一种图遍历算法,从根节点开始,探索所有相邻节点。
  • 深度优先搜索(DFS):深度优先搜索(DFS)算法从图的第一个节点开始,然后越来越深,直到我们找到目标节点或没有子节点的节点。


3.动态规划:


动态规划 (DP) 是一种通过将优化问题分解为更简单的子问题并利用整体问题的最优解依赖于其子问题的最优解这一事实来解决优化问题的算法技术。

4.递归算法:


递归是一种解决问题的技术,其中解决方案依赖于同一问题的较小实例的解决方案。计算阶乘是递归编程的一个经典例子。
每个递归程序都遵循相同的基本步骤序列:

  • 设置算法。递归程序通常需要一个种子值,开始。这是通过使用传递给函数的参数或通过提供为递归计算设置种子值的非递归网关函数来实现的。
  • 检查正在处理的当前值是否对应于基本情况。如果是,则处理该值并返回它。
  • 用更小或更简单的子问题或子问题来重新表述解决方案
  • 将算法应用于子问题。
  • 为了制定答案,结合结果。
  • 返回结果。


5. 分而治之:


分治算法递归地将一个问题划分为两个或多个相同或相关类型的子问题,直到它们简单到可以直接解决。
分而治之算法包括使用下面列出的三个步骤的争议。

  • 将原问题分解为子问题。
  • 征服:递归地一次解决每个子问题。
  • 组合:将子问题的解决方案放在一起,得到整个问题的解决方案。


6. 散列:


散列是一种使用散列函数将键和值映射到散列表中的技术或过程。这样做是为了更快地访问元素。映射的效率取决于哈希函数的效率。

结论:


有这么多不同复杂度的算法可用,很难确定哪些算法实际上对理解很重要。 它通常归结为个人偏好和观点,但本文重点介绍了开发人员必须注意的一些算法。

原文:https://medium.com/dare-to-be-better/6-algorithms-every-developer-shoul…

本文:

Article
知识星球
 
微信公众号
 
视频号