在给定执行时间的情况下,如何计算大O符号



我设法找到了解释如何计算函数的BigO表示法的文章和视频,但考虑到完成算法所需的时间,我找不到解释如何计算它的文章。请考虑以下问题:"一个算法的时间复杂度为O(n2(,当你实现并测试运行它时,你发现当n为200000时,该算法需要20秒才能运行。我们可以假设算法运行100000个值大约需要多长时间">

如何解决这个问题?或者一般来说,如果我知道最坏的情况,并且得到了运行算法所需的时间,我如何计算出该算法的bigO?

我们可以假设它大约需要5秒。

如果n和运行时间之间的关系是,对于某个常数c,算法正好需要c×n²秒,那么对于像问题中那样将n减半,你得到c×(n/2(²=(c×n平方(/4秒,即四分之一的时间。20秒的四分之一就是5秒。

最肯定的是,这种关系并不是完全那样,但很可能至少是大致这样,并且这n个值足够大,除非你有一个不寻常的算法。因此,既然我们被问及";假定";以及";近似";,5秒是正确的答案。

Big-O表示法是关于函数参数无穷大时函数的行为。

有限输入大小下的执行时间不能用于确定时间复杂性的big-O,也不能使用这种big-O来确定任何给定特定输入大小的执行时间。

最新更新