确定哪个算法是哪个并解释运行时间

时间:2010-09-11 07:48:58

标签: algorithm big-o

对于输入大小 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

的不同值选择哪种算法

请帮助我解决上述问题。 感谢

7 个答案:

答案 0 :(得分:2)

查看输入大小和计算时间的商数。

答案 1 :(得分:1)

绘制三种算法的性能 - 时间复杂度将变得明显。

答案 2 :(得分:1)

确保您理解术语nlognn^2n。考虑绘制此函数以了解输入与其输出之间的关系。如果你了解这些关系,答案就会很明显。

答案 3 :(得分:1)

这就是他们的情节看起来像

alt text

现在,如果您了解time complexity暗示的内容以及 n n 2 nlogn <的图表/ strong>看起来像,应该不难。

答案 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的图表的增长率... 你会看到。