请问以下三层嵌套循环的时间复杂度(Big-O表示法)是多少?
三层嵌套循环的时间复杂度分析
首先明确:不能直接用O(n)×O(n)×O(n)得出O(n³),实际计算逻辑要复杂得多,得逐层拆解循环的执行次数:
最外层循环(i):
从0到n-1,一共执行n次,时间复杂度是O(n)。中间层循环(j):
每次外层循环里,j从0到n²-1,一共执行n²次,单看这一层是O(n²)。但关键是内层循环的次数不是固定值,而是随j变化的。最内层循环(k):
每次j循环里,k从0到j-1,执行次数等于j(j=0时0次,j=1时1次,…,j=n²-1时n²-1次)。把这些次数加起来是等差数列求和:0 + 1 + 2 + ... + (n²-1) = (n²-1)×n²/2
这个求和结果的时间复杂度是O(n⁴)。
把三层的复杂度相乘:外层O(n) × 内层总复杂度O(n⁴) = O(n⁵)。
总结一下:内层循环的次数依赖中间变量j,不是固定的n,所以不能简单按三层都是O(n)来相乘,必须计算内层循环的累计执行次数,最终得到的时间复杂度是O(n⁵)。
内容的提问来源于stack exchange,提问作者Aldrin Lizardo
相关产品推荐
相关产品推荐

