您好,我收到了这个问题,但错误的答案是关于分析函数的运行时。
从我的角度来看,外部while循环运行n ^ 2次。具体来说,它从1到n ^ 2开始,因此,运行时是" n ^ 2 - 1",为简单起见,我们将其称为O(n ^ 2)。
内部for循环运行logn(base 2)次,因为除以2。
由于它是嵌套循环,我们必须将这两个运行时间相乘。
所以整个运行时变成了O(n ^ 2 * logn),然而,根据答案,我的答案是错误的。
你能解释为什么答案不是O(n ^ 2 * logn)而是O(n ^ 2)?
答案 0 :(得分:2)
永远不会执行内部循环,因为n²<1
为false,因此while
循环执行(n²-1)/2
次。