
计算时间复杂度时,不会分析每一条语句的执行具体情况,希望有人能教教
如果是两个平行的循环,那么复杂度是相加,如果是嵌套的循环,那么复杂度是相乘
本题:
- 可以看到是嵌套循环,时间复杂度相乘
- 分别计算两个循环的时间复杂度
- 不难看出for的复杂度是n
- while循环的结束条件是j<=2,而j=i,每次循环j=j/2,假设m次后结束循环,此时2 >=i/(2^m),反求m+1=log2 i ,复杂度可以略去+1并且i也可以看作n(因为上一层的复杂的是n)所以最后,while的复杂度为log n
- 最后,相乘得最后复杂度 nlog n
这就是 nLog(n)
外侧循环是N,内侧是LogN循环嵌套就是相乘