每个开发人员都应该学习的10个算法,你了解几个?

Stephen

共 1965字,需浏览 4分钟

 · 2022-07-05

点击关注上方“Stephen”,

设为“置顶或星标”,第一时间送达干货

  • 原文网址丨https://dev.to/codesphere/10-algorithms-every-developer-should-learn-3lnm

  • 作者丨Saji Wang

  • 译者丨w3cschool编程狮-三宝

  • 声明丨本文翻译仅用于学习交流,如需要转载请注明原文信息以及译者信息。



许多有抱负的开发者似乎都有一个很大的误解,认为记住标准算法很重要。对于某些工作面试来说可能是这样,但这对成为一名成功的开发人员并不是特别重要。


那么你在算法课上学到的东西没用吗?当然并非如此。但是最重要的还是算法思考的能力。这样你不仅可以复制和使用标准算法,还可以轻松地使用代码解决开发者遇到的任何问题。


下面汇总了10种算法,有抱负的开发人员应该通过这些算法来熟悉算法思维。


01
二分法查询


二分法查询是任何计算机科学课程中最先要教的内容之一。这也许是一个最简单的例子,但可以让事情的效率成倍提升。


二分法查询包括获取一个已排序的数组,通过迭代将数组拆分成两个部分,然后将要查询的元素与每一班进行比较,直到找到该元素。

02
冒泡、选择和插入排序


排序算法是开发人员应该拥有的最基本的工具之一。其中,选择、冒泡和插入排序是新开发人员最要先学习的内容。在任何考虑速度的情况下,你也许不会使用这些算法,但使用它们是对数组遍历和操作的一个很好的应用。


03
快速和合并排序


与第2条一样,排序算法对于熟悉数组非常有用,但快速排序和归并排序在重要的应用中也足够有效。轻松地实现这些排序算法,对于成为一名认真的开发人员来说是至关重要的。

04
霍夫曼编码


霍夫曼编码是现代文本压缩的基础。它的工作原理是考虑不同角色在文本中出现的频率,并基于这种频率将它们组织成一棵树。




05
广度优先搜索


树是开发人员使用的许多算法和软件的核心。因此,了解基本的树遍历是有抱负的开发人员的首要任务。

广度优先搜索(BFS)通过逐级探索树,直到找到目标节点。因为它确实经历了每一个节点,所以它肯定能找到解决方法



06
深度优先搜索


深度优先搜索(DFS)是在树中查找元素的而另一种方法。它不是逐层逐级向下工作,而是逐个分支搜索树分支。


现在假设它没有无限扩展的分支,DFS同样总是有效的。实现这两种搜索算法并不是特别复杂,但非常重要的是学会何时使用其中一种算法。很多软件设计都是能够理解你正在处理的信息的结构,并选择适合该结构的算法。



07
梯度下降法


对于很多开发人员来说,梯度下降法不一定用得到。但是,如果你使用回归或机器学习来接触任何东西,那么梯度下降法将成为你工作的核心。


梯度下降法是一种使用微积分优化函数的方法。在回归和机器学习的背景下,这意味着找到能够最大限度地减少预测算法中的误差的特定值。虽然和其他很多算法相比,它涉及到更多的数学问题,但如果你要处理大量的数据和预测,了解梯度下降是如何工作的是非常重要的。



08
Dijkstra算法


开发者要处理的另一个非常重要的问题是寻径。图被证明是一种非常通用的方法,用来描述各种涉及不同对象网络的问题。


Dijkstra算法是一种寻找图中两个节点之间最快路径的方法。它是大多数寻径工作的基础,并被用于从人工智能到游戏设计等领域。


09
Diffie-Hellman密钥转换


Diffie-Hellman密钥交换很好地介绍了密码学的工作原理。更具体地说,Diffie-Hellman密钥交换通过将公钥和私钥(有效的长数字)结合起来,在不同方之间传输信息时对信息进行加密。


即使你不是从事网络安全方面的工作,作为一名开发人员,对加密和安全通信有一定的了解也是非常重要的。此外,尽管Diffie-Helman远远不是最好的算法,但它非常容易实现,与大多数其他加密通信方法足够相似。



10
做练习题


以上9种算法提供了解决开发人员可能遇到的问题原型的方法。然而,现实情况是,作为开发人员,经常会遇到全新的算法问题。这就是为什么发展用算法解决问题的能力比记住任何算法更重要。


不过好在有许多可以练习算法的网站,例如:

  • https://leetcode.com/

  • htpps://www.hackerrank.com/


在这些网站上,你可以找到困难且令人满意的算法问题并磨练你的技能。


总结


同样,不是只记住这些算法,就认为你就可以突然成为了一个优秀的开发者。软件工程首先能够理解问题并构建解决方案。


学习算法并不重要,因为你将不得不为你正在构建的内容里准确地实现它们。他们很重要,因为它们教会你如何解决问题。


以上就是关于开发人员需要学习的10个算法的全部内容。


END


关注 Stephen,一起学习,一起成长。


“在看”支持下吧


点 阅读原文 可优惠充值话费,流量,视频会员等。

浏览 20
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报