Divide and Conquer (Merge Sort)
Divide and Conquer (Merge Sort)
Divide and
and Conquer
Conquer
(Merge
(Merge Sort)
Sort)
David A. Plaisted
1 22 26 19 55 37 43 99 2
18 26 32 6 43 15 9
22 26 19 55 37 43 99 2
18 26 32 6
43 15 9
22 26 19 55
18 26 32 6
43 15
22 26 19 55 37 43 99 2
18 26 32
43 15
22 26 19 55 37 43 99
37 43 99 2
Sorted Sequence
18 26 32 6 43 15 9
18 26 32 6
43 15 9
6 18 26 32
18 26 32 6
43 15
18 26
15 43
18 26 32
43 15
18 26 32
43 15
18 26 32
43 15
15 18 26 32 43
6 32
6
15 43
43
Merge-Sort (A, p, r)
INPUT: a sequence of n numbers stored in array A
OUTPUT: an ordered sequence of n numbers
MergeSort (A, p, r) // sort A[p..r] by divide & conquer
1 if p < r
2
then q (p+r)/2
3
MergeSort (A, p, q)
4
MergeSort (A, q+1, r)
5
Merge (A, p, q, r) // merges A[p..q] with A[q+1..r]
Initial Call: MergeSort(A, 1, n)
Procedure Merge
Merge(A, p, q, r)
1 n1 q p + 1
2 n2 r q
3
for i 1 to n1
4
do L[i] A[p + i 1]
5
for j 1 to n2
6
do R[j] A[q + j]
7
L[n1+1]
8
R[n2+1]
9
i1
10 j 1
11 for k p to r
12
do if L[i] R[j]
13
then A[k] L[i]
14
ii+1
15
else A[k] R[j]
16
jj+1
Merge Example
A
6
i
61
86 26
1 32
9 42 43
8 32
9 26
k k
8 26 32
9 42 43
Recurrences
Recurrences II
Recurrence Relations
Equation or an inequality that characterizes a
function by its values on smaller inputs.
Solution Methods (Chapter 4)
Substitution Method.
Recursion-tree Method.
Master Method.
if n c
otherwise
Recursion-tree Method
Recursion Trees
Show successive expansions of recurrences using
trees.
Keep track of the time spent on the subproblems of a
divide and conquer algorithm.
Help organize the algebraic bookkeeping necessary
to solve a recurrence.
if n = 1
if n > 1
cn/2
T(n/2)
cn/2
T(n/2)
T(n/4) T(n/4) T(n/4) T(n/4)
Cost of sorting
subproblems.
cn/2
cn/2
cn
cn
lg n
cn/4
cn/4 cn/4
cn/4
cn
c c c
cn
: cnlgn+cn
Total
cn/4 cn/4
cn/4
c c c