所以我在考试中被问到这个问题,这让我发疯了。问题是: 根据n:
,以下代码的时间复杂度是多少?math_util.h
a)O(n log(n))
b)O(n ^ 2)
我坚信答案是n(log(n)),因为内部循环只运行k次,其中k ^ 2 <= n,这只是log2(n),其时间复杂度为的log(n)。然而,我所谈过的每个人也参加了考试,他认为答案是n ^ 2。任何人都可以给我一个坚定的推理方式吗?谢谢!
答案 0 :(得分:3)
您的推理是正确的,下面有关于O(n log n)
的答案的次要编辑。答案无法O(n^2)
。
2^k = n
所以k = log n
内循环将运行:log n
次
外循环将运行:n
次
所以这是O(n log n)
时间复杂度