对于这种代码和平的最佳案例分析和最坏情况分析是什么?!它变得有点复杂了。帮助pleaseeee!我们会根据不同的输入有不同的大哦?或者对于最好的情况和最坏的情况,大的哦会是一样的吗?
int n = int.Parse(Console.ReadLine());
int i =1,j,k;
while(i<=n)
{
for(j=1;j<=i;j++)
{
if(j%3==0)
{
for(k=1;k<=(n/2);k++)
{
Console.Write("*");
}
}
else if(j%3==1)
{
k=j;
while(k>=1)
{
Console.Write("@");
k--;
}
}
else
{
for(k=1;k<=(j%3);k++)
{
Console.Write("$");
}
}
}
i++;
}
答案 0 :(得分:4)
这是课堂作业吗?我有一种感觉,你要我们为你做功课。
简短的回答是算法是O(n ^ 3)。
从控制台读取n的值。
外部循环是i = 1 .. n(我只是在循环中递增,即没有跳过任何步骤)。
第二个循环是j = 1 .. i(j只在循环中递增,即不跳过任何步骤)。
最内层循环,至少在(j%3 == 0)为k = 1 ... n / 2的情况下。
因此实现此算法需要~3 ^ 3步。
j从1开始的事实...我的意思是,平均而言,j = 1 .. n / 2,使得i / j循环需要(1/2)* n ^ 2步,这仍然是(N ^ 2)。
只有在(j%3 == 0)的情况下,最内层循环才需要n / 2步这一事实意味着它平均需要(1/3)*(n / 2)步,或者( 1/6)* n步骤。
结合最外面的两个循环(1/12)* n ^ 3步,这是一个O(n ^ 3)算法。