![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法考试
猫猫不喝茶
这个作者很懒,什么都没留下…
展开
-
回溯算法—图
search方法为回溯算法的核心实现,它利用"candidate"参数表示当前可选的顶点集合,依次考虑将"candidate"中的每个顶点加入当前团中,并递归地搜索下一层状态。时间复杂度分析:对于每个节点,可以选择加入或者不加入当前团中,因此搜索树的宽度为2。对于每个节点,在搜索下一层状态时需要遍历剩余所有顶点,因此搜索树的深度为n。最终的最大团即为搜索过程中遍历到的所有团中顶点数最多的一个。由于需要搜索所有可能的团,时间复杂度为指数级别。回溯算法的基本思想是搜索所有可能的解,并在搜索过程中剪枝。原创 2023-06-17 19:49:00 · 234 阅读 · 5 评论 -
动态规划——数塔
给出一个数塔,从该数塔的顶层出发,在每一个节点可以选择向左走或向右走,一直走到该数塔的最底层,找出一条路经,使得路径上的数值和最大,输出最大数值及其路径,输出时要求有文字说明。原创 2023-06-17 17:52:44 · 231 阅读 · 0 评论 -
贪心算法——二维数组
给出n个城市及任意两城市间的距离,要求旅行家在旅行者n个城市时,各个城市经历且仅经历一次然后回到出发城市,使得所走的路径最短。输出结果,原创 2023-06-17 17:12:25 · 317 阅读 · 0 评论 -
简治——淘汰赛
如果初始没有选手参加竞技淘汰赛,则无法进行比赛,也就不会有冠军产生。以上代码实现了一个简单的随机比赛过程,并输出了每轮比赛的结果和最终的冠军信息。该算法的时间复杂度为O(log n),其中n为选手数量,因为每一轮比赛都会将选手数量减半,直到只剩下一名冠军。空间复杂度为O(1),因为算法只需要存储少量的变量数据。原创 2023-06-17 16:30:10 · 201 阅读 · 0 评论 -
减治算法——堆排序
在堆排序的过程中,需要进行n次heapify操作,每次操作的时间复杂度为O(logn),因此堆排序的总时间复杂度为O(nlogn)。原创 2023-06-17 16:06:38 · 133 阅读 · 0 评论 -
归并与快排
对于归并排序,我们将原序列不断拆分成两个子序列,直到只剩下一个元素或空序列,然后再将它们合并为有序序列。因此,归并排序的时间复杂度为 O(nlogn),空间复杂度为 O(n)。对于快速排序,我们先通过 partition 方法将序列划分成两个部分,左边的小于等于 pivot,右边的大于 pivot。然后分别对这两个部分进行递归排序。最优情况下的时间复杂度是 O(nlogn),即每次 partition 的结果都平均划。原创 2023-06-17 15:59:21 · 66 阅读 · 1 评论 -
分治法——堆
方法递归地将金碟从起始柱子移动到目标柱子,并根据题目要求进行大小排序。当只有一个金碟时,直接将它从起始柱子移动到目标柱子;否则将它上面的金碟先移动到借助柱子,然后再将自己移动到目标柱子,最后将借助柱子上的金碟移动到目标柱子。空间复杂度为O(n),因为递归调用占用的栈空间最大深度为n。算法复杂度分析:该算法的时间复杂度为O(2。原创 2023-06-17 15:36:16 · 75 阅读 · 0 评论 -
分治法-数组
以下是Java语言实现数字旋转方的程序,对给定的初始数进行数字填充并输出结果,并分析其时间复杂度。该程序通过四个变量leftrighttop和bottom来控制数字填充的边界范围。在每一轮填充中,首先从左到右填充一行,然后将上界加1;接着从上到下填充一列,然后将右界减1;如果上界仍然小于等于下界,则从右到左填充一行,然后将下界减1;如果左界仍然小于等于右界,则从下到上填充一列,然后将左界加1。程序继续循环直到所有数字都填充完毕。对于一个n×n的矩阵,该程序总共需要填充n2)。原创 2023-06-17 15:06:54 · 108 阅读 · 0 评论 -
选择冒泡蛮力算法
冒泡排序的核心思想是不断地比较相邻两个元素的大小,如果它们的顺序错误就交换它们的位置。由于需要将整个未排序部分都遍历一遍才能找到最大元素,并且每次找到一个最大元素都要进行n-i-1次比较操作,因此冒泡排序的时间复杂度也为O(n^2)。选择排序的核心思想是从未排序的部分中找到最小元素并将其放置在已排序部分的最后面。具体来说,选择排序每次会遍历未排序部分中的所有元素,找到其中最小的元素,并将其交换至已排序部分的末尾。由于需要将整个未排序部分都遍历一遍才能找到最小元素,因此选择排序的时间复杂度为O(n^2)。原创 2023-06-17 11:34:20 · 49 阅读 · 0 评论 -
数理基础与串匹配BF算法
首先,我们来介绍BF算法(Brute-Force Algorithm),也称为朴素匹配算法。该算法基于暴力枚举的思想,逐个比较主串S的每一个字符与模式串T的每一个字符是否相同,直到找到完全匹配或者遍历完整个主串。以上代码中,bfSearch方法用于实现BF算法,其中i表示主串S中当前比较位置的下标,j表示模式串T中当前比较位置的下标。当T中所有字符都与S中当前位置开始的一段子串对应相同时,返回该子串在S中的起始下标i。原创 2023-06-17 11:29:36 · 84 阅读 · 0 评论