如何找到具有 O(n log n) 时间复杂度的输入大小的单位运行时间变化?[已结束]

How can I find the change in runtime per unit change in the size of input with an O(n log n) time complexity? [closed]

提问人:Software Guy 提问时间:9/24/2023 更新时间:9/24/2023 访问量:37

问:


想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。

2个月前关闭。

如果一个程序的运行时间是 4.956 秒,输入大小为 10,000,000,如果我将输入的大小增加到 20,000,000,并且时间复杂度为 O(n log n)(近似运行时),运行时间会是多少?

C 算法 时间复杂度 运行时 big-o

评论

1赞 teapot418 9/24/2023
复杂度可以隐藏 4.5 秒的恒定预热时间,并且仍然是 O(n log n)。所以严格来说,这没有好的答案。但是,你唯一能做的就是将n1和n2代入公式并使用比率。你在问怎么做吗?

答:

2赞 chqrlie 9/24/2023 #1

假设启动时间可以忽略不计,则该比率应约为

(2n.log(2n))/(n.log(n))

这简化为

(2.(log(n) + log(2)))/log(n)

2.(1 + log(2)/log(n))

因此,从 1000 万到 2000 万,该比率略高于 2,约为 2.086,运行时间约为 10.34 秒

但请注意,除了算法时间复杂度之外,其他因素可能会显著影响运行时间,例如 CPU 缓存大小和内存过量,因此观察到的大样本量时间可能不遵循预期曲线。

评论

0赞 chqrlie 9/24/2023
@teapot418:感谢您的仔细检查,心算错误:)