分析函数的运行时间

Analyzing runtime of function

你好,我收到了这个问题,但是关于分析函数运行时的回答错了。

在我看来,外部 while 循环运行了 n^2 次。具体来说,它从 1 开始到 n^2,因此,运行时间是 "n^2 - 1",为了简单起见,我们称它为 O(n^2)。

内部 for 循环运行 logn(基数 2)次,因为除以 2。

由于它是嵌套循环,我们必须将这 2 个运行时间相乘。

所以整个运行时间变成了O(n^2 * logn),然而,根据答案,我的答案是错误的。

你能解释一下答案不是 O(n^2 * logn) 而是 O(n^2) 的原因吗?

内部循环永远不会执行,因为 n²<1 为假,因此 while 循环执行 (n²-1)/2 次。