我是一名开发人员,您应该知道我不是数据结构和算法的忠实粉丝。如果你能理解这一点,别担心;在从事许多项目(无论大小)之后,我发现了每个开发人员都应该知道的六个重要算法,这六个算法几乎总能解决您开发过程中的所有问题。
那6个重要的算法是什么?
1.排序算法:
到底什么是排序?- 它是一种排列列表中项目顺序的算法。
重要的排序算法-
- 冒泡排序:冒泡排序是最基本的排序算法,它通过重复交换相邻元素(如果它们乱序)来工作。
- 合并排序:合并排序是一种使用分而治之策略的排序技术。
- 快速排序:快速排序是一种流行的排序算法,在对包含 n 个元素的数组进行排序时平均执行 n log n 次比较。是一种效率更高、速度更快的排序算法。
- 堆排序:堆排序通过将数组元素可视化为一种称为堆的特殊类型的完整二叉树来工作。
2.搜索算法:
搜索到底是什么?- 它是在数据集中查找元素的算法。
重要的搜索算法-
- 二进制搜索:二进制搜索采用分而治之的策略,其中将排序列表分为两半,并将项目与列表的中间元素进行比较。如果找到匹配项,则返回中间元素的位置。
- 广度优先搜索(BFS):广度优先搜索是一种图遍历算法,从根节点开始探索所有相邻节点。
- 深度优先搜索 (DFS):深度优先搜索 (DFS) 算法从图的第一个节点开始,然后越来越深,直到找到目标节点或没有子节点的节点。
3.动态规划:
动态规划 (DP) 是一种通过将优化问题分解为更简单的子问题并利用整体问题的最优解取决于其子问题的最优解这一事实来解决优化问题的算法技术。
4.递归算法:
递归是一种解决问题的技术,其中的解决方案取决于对同一问题的较小实例的解决方案。计算阶乘是递归编程的一个典型例子。
每个递归程序都遵循相同的基本步骤顺序:
- 设置算法。递归程序通常需要一个种子值作为开始。这是通过使用传递给函数的参数或通过提供为递归计算设置种子值的非递归网关函数来实现的。
- 检查正在处理的当前值是否符合基本情况。如果是,则处理该值并将其返回。
- 根据一个或多个更小或更简单的子问题重新表述解决方案。
- 将该算法应用于子问题。
- 为了制定一个答案,结合结果。
- 返回结果。
5.分而治之:
分而治之算法将一个问题递归地划分为两个或多个相同或相关类型的子问题,直到它们简单到可以直接解决为止。
分而治之算法由使用下面列出的三个步骤的争议组成。
- 将原始问题分解 为子问题。
- 征服:递归地一次解决每个子问题。
- Combine:将子问题的解组合在一起,得到整个问题的解。
6.散列:
哈希是一种使用哈希函数将键和值映射到哈希表中的技术或过程。这样做是为了更快地访问元素。映射的效率由散列函数的效率决定。
结论:
有这么多不同复杂度的算法可用,很难确定哪些是真正重要的。这通常归结为个人偏好和观点,但本文重点介绍了开发人员必须了解的一些算法。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。