以下时间复杂度如何计算?是不是O((n-1)^2)?我看两个都循环n-1次。
复杂度是要去掉常数项、低阶项和系数的,所以应该是 O(n^2)
【以下回答由 GPT 生成】
这段代码中的时间复杂度可以通过分析循环的执行次数来确定。
首先,外层循环 for (int i = 0; i < n - 1; i++)
的循环次数是 n-1
。
然后,在内层循环中,变量 j
的初始化是 i
,循环的条件是 k < n
,每次循环都会判断 array[k] < array[j]
是否成立,并更新 j
的值。因此,内层循环的执行次数是 n-1
、n-2
、n-3
、...、2
、1
。
所以,总的执行次数可以表示为 (n-1) + (n-2) + (n-3) + ... + 2 + 1
。
这是一个等差数列求和,可以使用等差数列求和公式 Sum = (n-1) * n / 2
来计算。所以,总的执行次数为 Sum = (n-1) * n / 2
。
因此,这段代码的时间复杂度为 O(n^2)
。
以下是代码:
这段代码的时间复杂度为O(n^2)。
【相关推荐】