算法 - 介绍 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间,空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。 算法中的指令描述的是一个计算,当其运行时能从一个初始状态和(可能为空的)初始输入开始,经过一系列有限而清晰定义的状态,最终产生输出并停止于一个终态。一个状态到另一个状态的转移不一定是确定的。随机化算法在内的一些算法,包含了一些随机输入。 形式化算法的概念部分源自尝试解决希尔伯特提出的判定问题,并在其后尝试定义有效计算性或者有效方法中成形。这些尝试包括库尔特·哥德尔、Jacques Herbrand和斯蒂芬·科尔·克莱尼分别于1930年、1934年和1935年提出的递归函数,阿隆佐·邱奇于1936年提出的λ演算,1936年Emil Leon Post的Formulation 1和艾伦·图灵1937年提出的图灵机。即使在当前,依然常有直觉想法难以定义为形式化算法的情况。-程序员及编程爱好者编程难题解决方案社区,旨为方便技术人员更快的开发代码,社区有全球各大网站的精品技术文章, 每日发表专业编程类与IT类技术文章,旨为打造最全的编程技术社区
面试必备:4种经典限流算法讲解 最近我们系统引入了Guava的RateLimiter限流组件,它是基于令牌桶算法实现的,而令牌桶是非常经典的限流算法。本文将跟大家一起学习几种经典的限流算法。 捡田螺的小男孩 2023-02-03 21
经典算法:快速选择算法 快速选择算法是一种选择算法,用于在无序列表中查找第K个最小元素。这个算法和快速排序算法有关。它在实际应用是一种高效的算法,具有很好的平均时间复杂度,最坏的时间复杂度非常不理想。快速选择及其变种是实际应用中最常使用的高效选择算法。 正经程序员 2023-01-26 15
经典算法:广度优先搜索算法(BFS) 广度优先搜索算法(BFS),又叫宽度优先搜索,或横向优先搜索,是一种图形搜索算法。简单的说,BFS是从根节点开始,沿着树的宽度遍历树的节点。如果所有节点均被访问,则算法中止。广度优先搜索的实现一般采用open-closed表。 正经程序员 2023-01-26 21
经典算法:深度优先搜索算法(DFS) 深度优先搜索算法(DFS)是一种用于遍历或搜索树或图的算法。这个算法会尽可能深的搜索树的分支。当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。 正经程序员 2023-01-26 25
经典算法:冒泡排序 因为简单易懂,冒泡排序几乎是我们学习的第一个算法。在学习算法课程时,老师通常用冒泡排序来讲述什么是算法,以及时间复杂度和空间复杂度的概念,虽然平时不会用,还是要理解一下实现思路。 正经程序员 2023-01-26 13
经典算法:桶排序 桶排序也叫箱排序,工作的原理是将数组分到有限数量的桶里。每个桶再进行排序排序,可能再使用别的排序算法或者是以递归的方式继续使用桶排序进行排序,桶排序是鸽巢排序的一种归纳结果。 正经程序员 2023-01-26 14
经典算法:贪心算法(警察抓小偷问题) 贪心算法,又叫做贪婪算法,是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。 正经程序员 2023-01-25 36