经典算法:快速选择算法 快速选择算法是一种选择算法,用于在无序列表中查找第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 11
经典算法:桶排序 桶排序也叫箱排序,工作的原理是将数组分到有限数量的桶里。每个桶再进行排序排序,可能再使用别的排序算法或者是以递归的方式继续使用桶排序进行排序,桶排序是鸽巢排序的一种归纳结果。 正经程序员 2023-01-26 14
经典算法:贪心算法(警察抓小偷问题) 贪心算法,又叫做贪婪算法,是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。 正经程序员 2023-01-25 33
经典算法:堆排序算法 堆排序是指用堆这种数据结构所设计的排序算法,堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子节点的键值或索引总是小于(或大于)它的父节点。 正经程序员 2023-01-25 19
经典算法:插入排序算法 插入排序是一种稳定的排序算法,和我们打扑克牌时,从桌子上抓牌,然后在手上排序的过程类似。它在性能方面不是最好的,因为要一次构建最终的排序数组。但在传统上比大多数其他简单的O(n 2 )算法(如选择排序或冒泡排序)更有效。也用于混合排序,结合了不同的排序算法来提高性能。 正经程序员 2023-01-25 14
经典算法:选择排序算法 选择排序是一种简单直观的排序算法。原理也比较简单,首先在未排序的序列中找到最小/最大元素,存放到排序序列的起始位置。然后再从剩余未排序元素中继续寻找最小/最大元素,然后放到已排序序列的末尾。然后直到所有元素全部排序完成。 正经程序员 2023-01-25 8