对于所有这些,我必须找出运行时间。
1.
for ( int i = 0; i < n; i+=2 )
sum++;
2.
for ( int i = 1; i < n; i*=2 )
sum++
3.
for ( int i = 0; i < n; i++ )
for ( int j = 0; j < n; j++ )
sum++;
4.
for ( int i = 0; i < n; i++ )
sum++
for ( int j = 0; j < n; j++ )
sum++
// The above are two loops one after the other, NOT nested
5.
for ( int i = 0; i < 2*n; i++ )
sum++
6.
for ( int i = 0; i < n*n; i++ )
sum++;
7.
for ( int i = 0; i < n; i++ )
for ( int j = 0; j < n*n; j++ )
sum++;
8.
for ( int i = 0; i < n; i++ )
for ( int j = 0; j < 10000; j++ )
sum++;
第一个我得到 O(n),第四个我得到 O(n^2)。这些是正确的吗?我该怎么做其他人?我真的对第二个感到困惑。
答案可以用大 O 或大 theta 表示。