如何计算时间复杂度数据结构

img


计算时间复杂度时,不会分析每一条语句的执行具体情况,希望有人能教教

如果是两个平行的循环,那么复杂度是相加,如果是嵌套的循环,那么复杂度是相乘
本题:

  1. 可以看到是嵌套循环,时间复杂度相乘
  2. 分别计算两个循环的时间复杂度
  • 不难看出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循环嵌套就是相乘