CS 332: Algorithms: Merge Sort Solving Recurrences The Master Theorem
CS 332: Algorithms: Merge Sort Solving Recurrences The Master Theorem
Merge Sort
Solving Recurrences
The Master Theorem
Administrative Question
Who here cannot make Monday-Wednesday
office hours at 10 AM?
If nobody, should we change class time?
Homework 1
Big O fact:
Intuitively,
() is like >
() is like
() is like =
Merge Sort
MergeSort(A, left, right) {
if (left < right) {
mid = floor((left + right) / 2);
MergeSort(A, left, mid);
MergeSort(A, mid+1, right);
Merge(A, left, mid, right);
}
}
// Merge() takes two sorted subarrays of A and
// merges them into a single sorted subarray of A
//
(how long should this take?)
Effort
T(n)
(1)
(1)
T(n/2)
T(n/2)
(n)
Recurrences
The expression:
n 1
T ( n)
2T cn n 1
2
is a recurrence.
Recurrence Examples
0
n0
s ( n)
c s (n 1) n 0
s ( n)
n 1
2T c n 1
n0
n s (n 1) n 0
T ( n)
T ( n)
n 1
n
aT cn n 1
b
Solving Recurrences
Substitution method
Iteration method
Master method
Solving Recurrences
Solving Recurrences
Solving Recurrences
Solving Recurrences
0
n0
s ( n)
c s (n 1) n 0
s(n) =
c + s(n-1)
c + c + s(n-2)
2c + s(n-2)
2c + c + s(n-3)
3c + s(n-3)
kc + s(n-k) = ck + s(n-k)
0
n0
s ( n)
c s (n 1) n 0
s(n) = ck + s(n-k)
What if k = n?
s(n) = cn + s(0) = cn
0
n0
s ( n)
c s (n 1) n 0
What if k = n?
s(n) = ck + s(n-k)
s(n) = cn + s(0) = cn
So
0
n0
s ( n)
c s (n 1) n 0
Thus in general
s(n) = cn
s ( n)
n0
n s (n 1) n 0
=
=
=
=
=
=
s(n)
n + s(n-1)
n + n-1 + s(n-2)
n + n-1 + n-2 + s(n-3)
n + n-1 + n-2 + n-3 + s(n-4)
s ( n)
n0
n s (n 1) n 0
=
=
=
=
=
=
s(n)
n + s(n-1)
n + n-1 + s(n-2)
n + n-1 + n-2 + s(n-3)
n + n-1 + n-2 + n-3 + s(n-4)
i n k 1
s(n k )
s ( n)
n0
n s (n 1) n 0
i n k 1
s(n k )
s ( n)
n0
n s (n 1) n 0
s(n k )
i n k 1
What if k = n?
s ( n)
n0
n s (n 1) n 0
s(n k )
i n k 1
What if k = n?
n 1
i s (0) i 0 n
2
i 1
i 1
n
s ( n)
n0
n s (n 1) n 0
s(n k )
i n k 1
What if k = n?
n 1
i s (0) i 0 n
2
i 1
i 1
n
Thus in general
n 1
s ( n) n
2
T (n) 2T
T(n) =
2T(n/2) + c
2(2T(n/2/2) + c) + c
22T(n/22) + 2c + c
22(2T(n/22/2) + c) + 3c
23T(n/23) + 4c + 3c
23T(n/23) + 7c
23(2T(n/23/2) + c) + 7c
24T(n/24) + 15c
c
n 1
n
c n 1
2
T (n) 2T
c
n 1
n
c n 1
2
What if k = lg n?