共计 1596 个字符,预计需要花费 4 分钟才能阅读完成。
许多有抱负的开发人员仿佛有一个很大的误会,即记住规范算法很重要。当初对于一些工作面试可能是这样,但对于真正成为一名胜利的开发人员来说并不是特地重要。
那么你在算法课上学的货色就没有用了吗?相对不。十分重要的是算法思考的能力。不仅是为了让您能够重现和祭坛规范算法,而且是为了让您可能轻松地应用代码来解决您作为开发人员遇到的任何问题。
这就是为什么咱们汇总了 10 种算法列表,有抱负的开发人员应该通过这些算法来相熟算法思维。
1. 二分查找
二进制搜寻是任何计算机科学课程中首先传授的内容之一。这可能是最简略的例子,阐明一点点独创性如何使事件变得更加高效。
二进制搜寻包含获取一个已排序的数组,并迭代地将数组分成两局部,而后将要查找的元素与每一半进行比拟,直到找到该元素。
2. 抉择、冒泡和插入排序
排序算法是开发人员应该领有的最根本的工具之一。抉择、冒泡和插入排序是新开发人员应该首先解决的一些问题。在速度很重要的任何状况下,您都不会应用这些算法,但应用它们是对数组遍历和操作的一个很好的介绍。
3. 疾速排序和合并排序
与 #2 相似,排序算法非常适合相熟数组,但 Quicksort 和 Mergesort 的效率足以在庄重的应用程序中应用。舒服地实现这些排序算法(留神“舒服”而不是“记忆”)这些算法对于成为一名认真的开发人员至关重要。
4. 霍夫曼编码
霍夫曼编码是古代文本压缩的根底。它通过思考不同字符在文本中呈现的频率来工作,并依据该频率将它们组织在树中。
5. 广度优先搜寻
再次证实,树是开发人员应用的许多算法和软件的外围。因而,理解根本的树遍历是有抱负的开发人员的首要任务。
广度优先搜寻通过逐级摸索树直到找到指标节点来工作。因为它的确经验了每个级别,因而能够保障找到解决方案
6. 深度优先搜寻
持续树遍历,深度优先搜寻是在树中查找元素的另一种次要办法。它不是逐层逐级向下工作,而是一一分支摸索树分支。
当初假如它没有有限扩大的分支,DFS 将同样始终无效。实现这两种搜索算法并不是特地简单,但十分重要的是学习何时应用其中一种。许多软件设计可能了解您正在应用的信息的构造,并抉择针对该构造进行优化的算法。
7. 梯度降落
当初对于很多开发人员来说,梯度降落不肯定有用。然而,如果您应用回归或机器学习来接触任何货色,那么梯度降落将成为您工作的外围。
梯度降落是一种应用微积分优化函数的办法。在回归和机器学习的背景下,这意味着找到可能最大限度地缩小预测算法中的误差的特定值。尽管与许多其余算法相比,它在数学上必定更多,但如果您正在大量解决数据和预测,那么理解梯度降落的工作原理十分重要。
8. Dijkstra 算法
开发人员解决的另一个十分重要的问题是寻路。图表被证实是一种十分通用的形式来形容波及不同对象网络的各种问题。
Dijkstra 算法是一种在图中找到两个节点之间最快门路的办法。它是大多数寻路工作的根底,并发现自己用于从人工智能到游戏设计的任何畛域。
9. Diffie-Hellman 密钥替换
Diffie-Hellman Key Exchange 很好地介绍了密码学的工作原理。更具体地说,Diffie-Hellman 密钥替换通过组合公钥和私钥(实际上是长数字)来加密在不同方之间传输的信息。
即便您不从事网络安全工作,对加密和平安通信的无效了解对于作为开发人员工作也十分重要。此外,只管 Diffie-Hellman 远非最佳算法,但它非常容易实现,并且与大多数其余加密通信办法足够类似。
10. 做练习题
前九种算法都为您提供了解决作为开发人员可能遇到的问题原型的办法。然而,现实情况是,作为开发人员,您常常会遇到全新的算法问题。这就是为什么比记住任何算法更重要的是造就用算法解决问题的能力。
到的问题原型的办法。然而,现实情况是,作为开发人员,您常常会遇到全新的算法问题。这就是为什么比记住任何算法更重要的是造就用算法解决问题的能力。
对于这些算法,你学废了么?