计算两个代码块的时间复杂度

Computing time complexity for two code blocks

本文关键字:代码 时间复杂度 两个 计算      更新时间:2023-10-16

Code 1

如果我们假设以下代码n可以被 4 整除,那么以下代码的时间复杂度T(n)是多少?有人可以向我解释一下吗?

for(int i=2;i<=n;i++)
{
for(int j=0;j<=n;)
{
std::cout<<i<<" "<<j<<"n";
j=j+(n/4);
}
}

代码 2

下面嵌套循环的时间复杂度T(n)是多少?假设n是 2 的幂。也就是说,n = 2^k对于一些正整数k

for (int i=1; i<=n; i++)
{
j = n;
while(j>=1)
{
<body of the while loop> //Needs θ(1)
j=⌊j/2⌋; // ⌊⌋=>Floor function
}
}

代码 1 是线性的。j += n / 4表示内循环对于任何值n运行恒定次数(5(,5n减少到O(n(。

代码 2 是 O(n log(n((。外部循环运行n次,内部循环运行log2(n)次,因为它反复将输入分成两半。