我设法找到了解释如何计算函数的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来确定任何给定特定输入大小的执行时间。