Time Complexity Exercise Answers
CS 201: Data Structures and
Algorithms
Solutions to Exercise 1 on Time
Complexity and Big-OH
1.
Statement
|
Number of times executed
|
sum=0
|
1
|
i=0
|
1
|
i<n
|
n+1
|
++i
|
n
|
sum++
|
n
|
Total
|
3n+3
|
T(n) = 3n+3,T(n) = O(n)
|
2.
Statement
|
Number of times executed
|
sum=0
|
1
|
i=0
|
1
|
i<n
|
n+1
|
++i
|
n
|
j=0
|
n
|
j<n
|
n(n+1) = n2 + n
|
++j
|
n2
|
sum++
|
n2
|
Total
|
3n2+4n+3
|
T(n) = 3n2+4n+3, T(n) = O(n2)
|
3.
Statement
|
Number of times executed
|
sum=0
|
1
|
k=0
|
1
|
i=0
|
1
|
i<n
|
n+1
|
++i
|
n
|
k=0
|
n
|
sum++
|
n
|
j=0
|
n
|
j<n
|
n(n+1)= n2+n
|
++j
|
n(n)=n2
|
sum++
|
n(n)=n2
|
k=k*sum
|
n(n)=n2
|
cout <<k
|
n(n)=n2
|
cout <<k
|
n
|
Total
|
5n2+7n+4
|
T(n)= 5n2+7n+4, T(n)=O(n2)
|
4.
Statement
|
Number of times executed
|
sum=0
|
1
|
i=0
|
1
|
i<n
|
n/2+1
|
i=i+2
|
n/2
|
sum++
|
n/2
|
Total
|
3n/2+3
|
T(n)=3n/2+3, T(n) = O(n)
|
5.
Statement
|
Number of times executed
|
sum=0
|
1
|
i=0
|
1
|
i<n
|
n/3+1
|
i=i+3
|
n/3
|
j=0
|
n/3
|
j<n
|
n/3(n/2+1)= n2/6+n/3
|
j=j+2
|
n/3*n/2= n2/6
|
sum++
|
n/3*n/2=n2/6
|
Total
|
3n2/6 + 4n/3 + 3
|
T(n) = n2/2 + 4n/3 + 3, T(n) = O(n2)
|
6.
Statement
|
Number of times executed
|
sum=0
|
1
|
i=n
|
1
|
i>=1
|
n/3+1
|
i=i-3
|
n/3
|
j=n
|
n/3
|
j>0
|
n/3(n+1) =n2/3+n/3
|
j--
|
n/3(n) =n2/3
|
sum++
|
n/3(n) =n2/3
|
Total
|
n2+4n/3+3
|
T(n) = n2+4n/3+3, T(n) = O(n2)
|
7.
Statement
|
Number of times executed
|
sum=0
|
1
|
i=1
|
1
|
i<n
|
log n + 1
|
i=i*2
|
log n
|
sum++
|
log n
|
Total
|
3log n + 3
|
T(n) = 3log n + 3,
T(n)=O(log n)
|
8.
Statement
|
Number of times executed
|
sum=0
|
1
|
i=1
|
1
|
i<n
|
log n + 1
|
i=i*2
|
log n
|
j=0
|
log n
|
j<n
|
log n(n+1) = nlog n + log n
|
++j
|
n log n
|
sum++
|
n log n
|
Total
|
3nlog n + 4 log n + 3
|
T(n) = 3nlog n + 4 log n +
3 , T(n)=O(nlog n)
|
9.
Statement
|
Number of times executed
|
i=1
|
1
|
i<=n
|
n+1
|
++i
|
n
|
cout<<i
|
n
|
Sum =0
|
n
|
j=1
|
n
|
j<=i
|
½ n(n+1) + n = ½ n2
+ 3/2 n
|
j++
|
½ n(n+1) = ½ n2 +
½ n
|
Sum++
|
½ n(n+1) = ½ n2 +
½ n
|
cout<<i
|
½ n(n+1) = ½ n2 +
½ n
|
cout << Sum
|
n
|
Total
|
2n2 + 9n + 2
|
T(n) = 2n2 + 9n + 2 , T(n) = O(n2)
|
10.
Statement
|
Number of times executed
|
sum=0
|
1
|
i=1
|
1
|
i<=n
|
log2n + 1
|
i=i*2
|
log2n
|
cout<<i
|
log2n
|
cout << sum
|
log2n
|
j=1
|
log2n
|
j<=i
|
2n-1 + log2n
|
j++
|
2n-1
|
cout<<j
|
2n-1
|
cout << ‘*’
|
2n-1
|
sum++
|
2n-1
|
sum=0
|
log2n
|
Total
|
10n+7log2n-2
|
T(n) = 10n+7log2n-2,
T(n) = O(n)
|
11. Which rule will you apply
here?
Statement
|
Number of times executed
|
i=1
|
1
|
i<n
|
log4n + 1
|
i=i*4
|
log4n
|
cout<<i
|
log4n
|
j=0
|
log4n
|
j<n
|
log4n(n/2+1) = ½
nlog4n + log4n
|
j=j+2
|
log4n(n/2)
|
cout<<j
|
log4n(n/2)
|
sum++
|
log4n(n/2)
|
cout<<sum
|
log4n
|
Total
|
2nlog4n+6log4n+2
|
T(n) = 2nlog4n+6log4n+2,
T(n) = O(n logn)
|
12. Which rule will you apply
here?
Statement
|
Number of times executed
|
i=0
|
1
|
i<n
|
n/3 + 1
|
i=i+3
|
n/3
|
cout<<i
|
n/3
|
j=1
|
n/3
|
j<n
|
n/3(log3n+1)=n/3 log3n+n/3
|
j=j*3
|
n/3 (log3n)
|
cout<<j
|
n/3 (log3n)
|
sum++
|
n/3(log3n )
|
cout<<sum
|
n/3
|
Total
|
4/3nlog3n+2n+2
|
T(n) = 4/3nlog3n+2n+2,
T(n) = O(n logn)
|
Comments
Post a Comment