Uploaded by Steven 68

Assignment1

advertisement
第一章习题
1.
𝑛
5.
𝑐 = 𝑐𝑛2
i = n;
while(i > 1)
i=i/2;
for语句内,𝑗在第𝑘次循环后的值为
𝑗𝑘 = 2𝑘 𝑖
𝑖在第𝑘次循环后的值为
𝑖𝑘 =
𝑛
令𝑗𝑘 < 𝑛,得
2𝑘
𝑘 < log2
令𝑖𝑘 > 1,得
𝑘 < log2 𝑛
𝑛
𝑖
要使𝑘为最大整数,则
要使𝑘为最大整数,则
𝑘 = log2
𝑘 = ⌊log2 𝑛⌋
𝑛
𝑖
则循环次数为
则循环次数为
log2
⌊log2 𝑛⌋ + 1
则
𝑛
+1
𝑖
则
⌊log2 𝑛⌋+1
𝑇 (𝑛) =
𝑛−1 log2
𝑐 = 𝑐(⌊log2 𝑛⌋ + 1)
𝑂 = 𝑂(log 𝑛)
=𝑐
𝑛
𝑛
𝑘=1
𝑛−1
5 1
±
(𝑛 − 1) +
(⌊log2 𝑛⌋ − ⌊log2 𝑖⌋)
2 2
𝑖=1
9 1
±
(𝑛 − 1) + (𝑛 − 1)⌊log2 𝑛⌋ − 𝑛⌊log2 (𝑛 − 1)⌋ − 2
2 2
当𝑛 → ∞时,含(𝑛 − 1)的项占主导,
𝑛
𝑇 (𝑛) =
=𝑐
+1
𝑐
𝑖=1
for(i = 1; i <= n; i++)
for(j = 1; j <=n; j++)
for(k = 1; k <= n; k++)
x++;
𝑛
𝑖
𝑇 (𝑛) =
𝑘=1
𝑐 = 𝑐𝑛
𝑖=1 𝑗=1 𝑘=1
𝑂 = 𝑂 𝑛3
4.
𝑘=1
for(i = 1; i < n; i++)
{
j = i;
while(j < n)
j *= 2;
}
𝑂 = 𝑂 𝑛2
3.
𝑐 = 𝑐 𝑛2 + 𝑛
𝑂 = 𝑂 𝑛2
𝑖=0 𝑗=0
2.
𝑛
𝑐+
𝑖=1 𝑗=1
𝑛−1 𝑛−1
𝑇 (𝑛) =
𝑛
𝑇 (𝑛) =
for(i = 0; i < n; i++)
for(j = i; j < n; j++)
x++;
for(i = 1; i <= n; i++)
for(j = 1; j <=n; j++)
x++;
for(k = 1; k <= n; k++)
x++;
3
𝑂 = 𝑂(𝑛)
Download