对于输入大小 n 的给定问题,执行算法A,B,C。在运行时间方面,其中一种算法是 O(n),一种 O(nlogn),一种 O(n ^ 2) 。这些算法的一些测量运行时间如下所示
Input Size
512 1024 2048
A 70 134 262
B 135 517 2053
C 42 86 182
确定哪种算法,并解释观察到的运行时间。您将为 n
的不同值选择哪种算法请帮助我解决上述问题。 感谢
答案 0 :(得分:2)
查看输入大小和计算时间的商数。
答案 1 :(得分:1)
绘制三种算法的性能 - 时间复杂度将变得明显。
答案 2 :(得分:1)
确保您理解术语nlogn
,n^2
和n
。考虑绘制此函数以了解输入与其输出之间的关系。如果你了解这些关系,答案就会很明显。
答案 3 :(得分:1)
答案 4 :(得分:1)
我经常发现,比较复杂性的最简单方法是“将搜索结果标准化”。
Input Size: 1 2 4
Algorithm A: 1 1.91 3.74
Algorithm C: 1 2.04 4.33
Algorithm B: 1 3.82 15.21
这个表只是通过将每一行除以最小值(在这种情况下是第一个元素)得到的。
然后我重新排序从慢速增长的线到快速增长的线:您能猜出每种算法的复杂性吗?
PS:n log n
的备忘单,只是为了验证近似值
Input Size Time
n n log n
2*n 2 * n * (log n + log 2)
4*n 4 * n * (log n + 2 * log 2)
答案 5 :(得分:1)
这个问题令我感到惊讶:有些老师会提出这类虚假和误导性的问题。
1)问题真的是关于O(n),O(nlogn),O(n ^ 2),当它们真正意味着Theta(n),Theta(nlogn)和Theta(n ^ 2)?
2)
只有三个数据点(或总共9个)不足以区分哪个数据点。
我们可以选择合适的常数,使A,B,C可以是我们想要的三种中的任何一种。
答案 6 :(得分:0)
绘制3个数据集的图形。比较n,nlogn的图表的增长率... 你会看到。