数据结构关于时间复杂度的计算

以下时间复杂度如何计算?是不是O((n-1)^2)?我看两个都循环n-1次。

img

复杂度是要去掉常数项、低阶项和系数的,所以应该是 O(n^2)

【以下回答由 GPT 生成】

这段代码中的时间复杂度可以通过分析循环的执行次数来确定。

首先,外层循环 for (int i = 0; i < n - 1; i++) 的循环次数是 n-1

然后,在内层循环中,变量 j 的初始化是 i,循环的条件是 k < n,每次循环都会判断 array[k] < array[j] 是否成立,并更新 j 的值。因此,内层循环的执行次数是 n-1n-2n-3、...、21

所以,总的执行次数可以表示为 (n-1) + (n-2) + (n-3) + ... + 2 + 1

这是一个等差数列求和,可以使用等差数列求和公式 Sum = (n-1) * n / 2 来计算。所以,总的执行次数为 Sum = (n-1) * n / 2

因此,这段代码的时间复杂度为 O(n^2)

以下是代码:

这段代码的时间复杂度为O(n^2)。


【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^