如何找到2种算法的运行时间的交叉点?

时间:2013-07-06 17:29:55

标签: algorithm

我正在尝试比较两种排序算法。假设对于大小为n的所有输入,第一个算法在8n^2秒内运行,而第二个算法在64n lg n秒内运行。对于哪个值n,第一个算法是否胜过第二个算法?

答案是:8n^2 < 64n lg n.

2 <= n <= 43.

我如何从问题中得出它?为什么不呢。

8n^2 > 64n lg n
or  8n^2 = 64n lg n

获取值2 <= n <= 43。对不起,我是新来的。有人可以向我解释一下吗?

2 个答案:

答案 0 :(得分:2)

你希望n

   8n^2 < 64n lg n
=> 8n^2 - 64n lg n < 0

我们solve h(n) = 8n^2 - 64n lg n for its roots并发现它源于n_1 ~= 1.100n_2 ~= 43.559。如果我们plot这个函数,我们会在n < n_1n > n_2时看到它是正数。

Plot of 8^n2 - 64n lg n

因此,当n < n_1n > n_2时,二次算法超出了linearithmic算法的运行时间。因此,二次算法优于n [1.1, 43.559]中的2 <= n <= 43,这意味着n,因为n必须是整数。否则,对于所有其他{{1}},二次算法不如线性算法。

答案 1 :(得分:1)

如果记忆能正确地为我服务,相信我已经有一段时间了,但你真正需要做的就是绘制这些曲线以找到答案。要更好地理解问题,请绘制基本日志函数图。您将看到它在开始时快速加速并且随着x变大而变平,而x ^ 2算法的加速度将继续增加。如果您有图形计算器,请查看图表,它将帮助您更好地理解它