我在练习测试中有这个问题而且我不确定代码何时会在O(n * n)上比O(log n)更快地运行。
答案 0 :(得分:6)
大哦符号给出了上限。不多了。
如果算法A为O(n ^ 2)
,则可能需要n ^ 2
个步骤。
如果算法B为O(log n)
,则可能需要10000 * log n
个步骤。
对于小n
,算法A比算法B快很多。
答案 1 :(得分:0)
请记住,Big-O是上限。由于在较小输入大小下的常数,O(n ^ 2)算法可以比O(log n)运行得更快,这很可能。完全可能的是,在大多数情况下,n ^ 2也可以运行得更快,并且该算法恰好在n ^ 2中运行,因为某些输入集导致它必须做很多工作。
答案 2 :(得分:0)
我正在撤回我之前的答案,因为从技术上来说,O(n*n)
算法可能比O(log n)
算法更快,尽管非常不可能。有关详细信息,请参阅我在答案中与耶稣的讨论。下图显示时间复杂度正好 log n
的算法总是比时间复杂度完全 n*n
的算法更快}。