算法实验报告
记录下完成的算法作业
_y17
清风徐徐,此爱蓄势待发,不日即达。
展开
-
实现n皇后算法
(1)编写程序实现n皇后算法。(2)画出运行时间与皇后n的关系图。(3)分析实验结果。原创 2024-02-02 01:00:00 · 343 阅读 · 0 评论 -
用Kruskal 算法实现最小生成树
【代码】用Kruskal 算法实现最小生成树。原创 2024-02-01 12:47:04 · 470 阅读 · 1 评论 -
0-1背包问题的递归,备忘录,及动态规划的比较。
(1)编写程序实现0-1背包问题的递归,备忘录,及动态规划的比较。(2)画出运行时间与n*C的曲线,并分析原因.原创 2024-01-22 13:24:54 · 622 阅读 · 0 评论 -
最长公共子序列递归备忘录,动态规划算法实验报告
随着字符串长度的增加,程序的运行时间呈指数级增长。这是由于递归备忘录方法的时间复杂度是O(n*m),需要存储大量中间计算结果来减少重复计算,从而提高效率。随着字符串长度的增加,程序的运行时间呈线性增长。这是由于动态规划方法通过填表法计算最长公共子序列,不需要进行递归调用和重复计算,时间复杂度为O(n*m)。(2)画出程序运行时间与n*m的关系图,解释实验结果。(1)最长公共子序列递归备忘录,动态规划算法比较。由运行结果可视化分析可以得出,当n逐渐增大后,原创 2024-01-20 18:07:15 · 752 阅读 · 0 评论 -
(1)插入排序、合并、快速排序运行时间与排序元素个数的统计比较;(2)阐述比较结果。(3)利用算法采用的设计方法,时间复杂度等分析得到该结果的原因。
在平均情况下,快速排序的时间复杂度为O(nlogn),其中n是待排序数组的长度。由于直接插入排序每次只能将一个元素插入到已排序序列中,因此在平均情况下需要进行n^2/4次比较和n^2/4次移动。假设要被排序的序列中由n个数,遍历一趟的时间复杂度为O(n),一共需要遍历n-1次所以插入排序的时间复杂度是O(N^2)。合并排序将待排序的数组不断地分割成小的数组,然后再合并这些小数组以得到最终的有序数组。其时间复杂度为O(n log n),因为每一次合并操作都涉及到n个元素,而总共需要进行log n次合并操作。原创 2024-01-11 14:06:08 · 372 阅读 · 0 评论 -
(1)插入排序与合并排序运行时间与排序元素个数的统计比较(2)阐述比较结果(3)利用算法采用的设计方法,时间复杂度等分析得到该结果的原因。
文末附有完整源码原创 2023-12-19 17:00:37 · 338 阅读 · 1 评论 -
(1)用程序实现插入排序的递归与非递归算法;(2)并分别画出程序运行时间t与元素个数的曲线图。(3)实验中是否遇到相关问题,并分析出现该问题的原因。
文末附有完整源码原创 2023-12-18 15:38:08 · 381 阅读 · 1 评论 -
实现递归与迭代斐波那契数列的算法并画出程序执行时间与n的关系。
迭代实现中,我们使用一个循环来计算斐波那契数列,循环的迭代次数与n值相关。因此,迭代实现的时间复杂度为O(n)。这种情况发生在递归树的每一层都会有两个子问题产生,即递归深度为n。递归实现斐波那契数列的算法在计算过程中会重复计算很多次相同的子问题,导致时间复杂度高。平均情况:由于递归实现的时间复杂度是指数级的,平均情况下的时间复杂度也是O(2^n)。在递归实现中,每次递归调用时都会产生两个子问题,直到达到基本情况。无论是最好情况还是最坏情况,迭代实现的时间复杂度都是O(n)。所花费的时间明显高于。原创 2023-12-12 21:38:44 · 394 阅读 · 2 评论