我正在尝试查找每个语句的频率以及该方法的主要作用。
但是我正在为else部分而苦苦挣扎,我知道我们采用的if和else的复杂性最差
但是在逻辑上,在这种情况下,我是否将外循环(n)的频率乘以else循环(n + 1)的频率?虽然我知道else块只会在i = 0时执行一次 但是当我们遵循规则时,我们必须乘以它 所以我被困在这里,我不知道在这种情况下该怎么办,我希望你们能帮助我 谢谢!
int i, j, sum = 0;
for (i = 0 ; i < n; i++)
if ( i != 0)
Sum += i;
else
for (j = 0 ; j< n; j++)
Sum + = j;
答案 0 :(得分:2)
因此,您有一个O(n)循环和一个O(n)循环。 但是在您的代码中,我们只经历一次else语句。
因此,您有一个for循环,在if内执行O(1)次(n-1)次,在一次(i == 0)内执行O(n)次(到达else语句时) )
因此复杂度为O(n)=(n-1)* O(1)+ O(n)〜O(2n),这也是O(n),因为我们在进行渐近分析时会删除常数。