2路归并排序 2. 利用递归将待排序数组划分到每组只剩一个元素,相邻的两组有序序列进行合并。1. 申请一个与待排序数组一样大小的辅助数组。最好最坏平均都是O(nlogn)O(n)(需要一个辅助数组)3. 最终得到全部有序。
堆排序 2. 大根堆:对于树中任意一个结点n,n大于它的左孩子、右孩子,根结点最大。3. 小根堆:对于树中任意一个结点n,n小于它的左孩子、右孩子,根结点最小。4. 使用大根堆排序得到递增序列,使用小根堆排序得到递减序列。1. 堆分为大根堆、小根堆,逻辑上是一棵完全二叉树。2. 将第一个也就是最大的元素与最后一个元素交换。3. 对于交换后的第一个元素,重新调整为大根堆。最好最坏平均都是O(nlogn)1. 将待排序序列建立成大根堆。4. 重复2、3,一共n-1次。调整为大根堆是关键,下面是代码。
快速排序 总是以第一个元素为基准,目标是找到基准的位置,使得右边都大于基准,左边都小于基准,然后再递归左右的子表,从而找到所有元素的位置,完成排序。最好情况:O(nlogn)最坏情况:O(n^2)由于要使用递归函数栈。
并查集 并查集是一种用于管理集合的数据结构,它主要支持两种操作:合并(Union)和查询(Find)。并查集用于维护一个元素的集合划分,每个集合称为一个组或一个集。将两个集合并成一个集合。判断某个元素属于哪一个集合,判断某两个元素是否同属一个集合。并查集是一种强大的数据结构,用于解决集合合并与查询问题。通过合并和查询操作,可以有效地管理元素之间的关系。点个关注吧~~~~~~
深度优先搜索(DFS) 深度优先搜索(Depth-First Search,DFS)是一种常见的图遍历算法,用于在图或树等数据结构中探索所有可能的路径,以及查找特定目标(如寻找路径、判断连通性等)。DFS从一个起始顶点出发,沿着一条路径尽可能深入地访问顶点,直到不能继续为止,然后回溯到之前的顶点,继续尝试其他路径。这个过程通常使用递归来实现。在图的DFS中,我们需要记录已经访问过的顶点,以避免无限循环。从起始顶点开始,对于每个未访问的邻接顶点,我们递归地执行DFS。下图为一个示例图,我们将对这个图进行DFS遍历。