Algorithm 算法时间复杂度分析(对于具有内部while循环的循环)
下面是我简单地实现的代码。for循环的复杂度应为O(n)。我就是搞不清楚内部while循环的时间复杂性Algorithm 算法时间复杂度分析(对于具有内部while循环的循环),algorithm,time,big-o,time-complexity,Algorithm,Time,Big O,Time Complexity,下面是我简单地实现的代码。for循环的复杂度应为O(n)。我就是搞不清楚内部while循环的时间复杂性 int x,n; // Inputted by the user. for (int i=0; i<n; i++) { int done=0; if (Condition) { while (done < x) { done++; // Based on a lot of operat
int x,n; // Inputted by the user.
for (int i=0; i<n; i++)
{
int done=0;
if (Condition)
{
while (done < x)
{
done++; // Based on a lot of operations
}
}
}
int x,n;//由用户输入。
对于(inti=0;i这里,复杂性是通过研究程序运行内部循环操作的次数来衡量的
每次触发条件
时,内循环运行x次
。因此,内循环复杂度为O(x)
此循环最多可以运行n次。这为您提供了O(x.n)的总体最坏情况复杂性
对<代码>条件
有更多的了解可以让你进行更精确的分析。例如,你可以计算平均复杂度
例如:设条件为!(i&(i-1))
。当且仅当i
为0或2的幂时,这是真的。在这种情况下,循环将精确运行E(ln2(n))+2次(E(
为整数部分函数).最后,知道这一点的总体复杂度变为O(x.ln(n))总体内部循环复杂度为O(x)。但由于未将done
重置为0,因此x
乘以“内部操作”在外循环中运行。最后,这些操作只执行x次
。然后,它在每次触发条件
时运行,而不仅仅是第一次。内循环的复杂度保持为O(x)(以您的操作运行次数为指标)@Rerito总体复杂度是否为O(xn)在这种情况下?内环的复杂度是O(x)。一旦与外环结合,你会得到最坏情况下的复杂度O(xn)。时间复杂度最多是O(nx)。因为我们不知道什么是“条件”,我们无法更准确地判断。