当前位置: 首页 > 后端技术 > Java

每个开发人员都应该学习的10种算法

时间:2023-04-01 15:05:38 Java

许多有抱负的开发人员似乎都有一个很大的误解,那就是记住标准算法很重要。现在这对于某些工作面试来说可能是正确的,但对于真正成为一名成功的开发人员来说并不是特别重要。那你在算法课上学的东西就没用了?绝对不。非常重要的是算法思考的能力。不仅让您可以复制和祭坛标准算法,而且让您可以轻松地使用代码来解决您作为开发人员遇到的任何问题。这就是为什么我们列出了10种算法,有抱负的开发人员应该使用这些算法来熟悉算法思维。1.二进制搜索二进制搜索是任何计算机科学课程中首先教授的内容之一。这可能是一个最简单的例子,说明一点点聪明才智如何使事情更有效率。二分搜索涉及获取一个排序数组并迭代地将数组一分为二,然后将您要查找的元素与每一半进行比较,直到找到该元素。2.选择排序、冒泡排序和插入排序排序算法是开发人员应该具备的最基本的工具之一。选择、冒泡和插入排序是新开发人员应该首先解决的一些问题。在速度很重要的任何情况下都不会使用这些算法,但使用它们可以很好地介绍数组遍历和操作。3.Quicksort和Mergesort与#2类似,排序算法非常适合熟悉的数组,但Quicksort和Mergesort的效率足以用于严肃的应用程序。舒适地实现这些排序算法(注意“舒适”而不是“记忆”)这些算法对于成为一个认真的开发人员来说是必不可少的。4.霍夫曼编码霍夫曼编码是现代文本压缩的基础。它的工作原理是考虑不同字符在文本中出现的频率,并根据该频率将它们组织在树中。5.广度优先搜索再次证明树是开发人员使用的许多算法和软件的核心。因此,了解基本的树遍历是有抱负的开发人员的首要任务。广度优先搜索的工作原理是逐层探索树,直到找到目标节点。由于它确实遍历了每一层,因此可以保证找到解决方案6.深度优先搜索继续树遍历,深度优先搜索是另一种在树中查找元素的主要方法。它不是逐级向下工作,而是逐个分支探索树分支。现在假设它没有无限扩展的分支,DFS也将始终有效。实现这两种搜索算法并不是特别复杂,但了解何时使用其中一种算法非常重要。许多软件旨在了解您正在使用的信息的结构,并选择针对该结构优化的算法。7.梯度下降如今,梯度下降对许多开发人员来说不一定有用。但是,如果您将回归或机器学习用于任何事情,那么梯度下降将是您所做工作的核心。梯度下降是一种使用微积分优化函数的方法。在回归和机器学习的背景下,这意味着找到能够最小化预测算法错误的特定值。虽然它肯定比许多其他算法更数学化,但如果您要处理大量数据和预测,了解梯度下降的工作原理非常重要。8.Dijkstra算法的开发者处理的另一个非常重要的问题是寻路。图已被证明是描述涉及不同对象网络的各种问题的一种非常通用的方法。Dijkstra算法是一种寻找图中两个节点之间最快路径的方法。它是大多数寻路工作的基础,并发现自己被用于从人工智能到游戏设计的任何领域。9.Diffie-HellmanKeyExchangeDiffie-HellmanKeyExchange很好地介绍了密码学的工作原理。更具体地说,Diffie-Hellman密钥交换通过组合公钥和私钥(实际上是长数字)来加密各方之间传输的信息。即使您不从事网络安全工作,对加密和安全通信的实用理解对于作为开发人员工作也非常重要。此外,虽然Diffie-Hellman远非最佳算法,但它非常容易实现并且与大多数其他加密通信方法非常相似。10.做练习题前九种算法都为您提供了对开发人员可能遇到的问题进行原型设计的方法。然而,现实情况是,作为开发人员,您经常会遇到全新的算法问题。这就是为什么培养用算法解决问题的能力比记住任何算法更重要的原因。问题原型的方法。然而,现实情况是,作为开发人员,您经常会遇到全新的算法问题。这就是为什么培养用算法解决问题的能力比记住任何算法更重要的原因。你了解过这些算法吗?