0% found this document useful (0 votes)
30 views22 pages

02 - Merge Sort and Solving Recursion

CS3329

Uploaded by

HONG TTN.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
30 views22 pages

02 - Merge Sort and Solving Recursion

CS3329

Uploaded by

HONG TTN.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 22

Merge Sort

Solving Recurrences
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?)
Merge Sort: Example
 Show MergeSort() running on the array

A = {10, 5, 7, 6, 1, 4, 8, 3, 2, 9};
Analysis of Merge Sort

Statement Effort
MergeSort(A, left, right) { T(n)
if (left < right) { (1)
mid = floor((left + right) / 2); (1)
MergeSort(A, left, mid); T(n/2)
MergeSort(A, mid+1, right); T(n/2)
Merge(A, left, mid, right); (n)
}
}
 So T(n) = (1) when n = 1, and
2T(n/2) + (n) when n > 1
 So what (more succinctly) is T(n)?
Recurrences
 The expression:
 c n 1

T (n) 
n
2T    cn n  1

  2 
is a recurrence.
 Recurrence: an equation that describes a function
in terms of its value on smaller functions
Recurrence Examples

 0 n 0  0 n 0
s (n)  s (n) 
c  s (n  1) n  0 n  s (n  1) n  0

c n 1 
  c n 1
 
T (n)  T (n) 
 n
2T    c n  1   n
  2  aT    cn n  1
 b
Solving Recurrences
 Substitution method
 Iteration method
 Master method
Solving Recurrences
 The substitution method (CLR 4.1)
 A.k.a. the “making a good guess method”
 Guess the form of the answer, then use induction
to find the constants and show that solution works
 Examples:
 T(n) = 2T(n/2) + (n)  T(n) = (n lg n)
 T(n) = 2T(n/2) + n  ???
Solving Recurrences
 The substitution method (CLR 4.1)
 A.k.a. the “making a good guess method”
 Guess the form of the answer, then use induction
to find the constants and show that solution works
 Examples:
 T(n) = 2T(n/2) + (n)  T(n) = (n lg n)
 T(n) = 2T(n/2) + n  T(n) = (n lg n)
 T(n) = 2T(n/2 )+ 17) + n  ???
Solving Recurrences
 The substitution method (CLR 4.1)
 A.k.a. the “making a good guess method”
 Guess the form of the answer, then use induction
to find the constants and show that solution works
 Examples:
 T(n) = 2T(n/2) + (n)  T(n) = (n lg n)
 T(n) = 2T(n/2) + n  T(n) = (n lg n)
 T(n) = 2T(n/2+ 17) + n  (n lg n)
Solving Recurrences
 Another option is what the book calls the
“iteration method”
 Expand the recurrence
 Work some algebra to express as a summation
 Evaluate the summation
 We will show several examples
 0 n 0
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 n 0
s (n) 
c  s (n  1) n  0
 So far for n >= k we have
 s(n) = ck + s(n-k)
 What if k = n?
 s(n) = cn + s(0) = cn
 0 n 0
s (n) 
c  s (n  1) n  0
 So far for n >= k we have
 s(n) = ck + s(n-k)
 What if k = n?
 s(n) = cn + s(0) = cn
 So  0 n 0
s (n) 
c  s (n  1) n  0
 Thus in general
 s(n) = cn
 0 n 0
s (n) 
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)
= …
= n + n-1 + n-2 + n-3 + … + n-(k-1) + s(n-k)
 0 n 0
s (n) 
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)
= …
= n + n-1 + n-2 + n-3 + … + n-(k-1) + s(n-k)
n

i
i n  k 1
 s(n  k )
 0 n 0
s (n) 
n  s (n  1) n  0
 So far for n >= k we have
n

i
i n  k 1
 s(n  k )
 0 n 0
s (n) 
n  s (n  1) n  0
 So far for n >= k we have
n

i
i n  k 1
 s(n  k )

 What if k = n?
 0 n 0
s (n) 
n  s (n  1) n  0
 So far for n >= k we have
n

i
i n  k 1
 s(n  k )

 What if k = n?
n n
n 1

i 1
i  s (0)   i  0  n
i 1 2
 0 n 0
s (n) 
n  s (n  1) n  0
 So far for n >= k we have
n

i
i n  k 1
 s(n  k )

 What if k = n?
n n
n 1

i 1
i  s (0)   i  0  n
i 1 2
 Thus in general
n 1
s ( n)  n
2
 c n 1
  n
T (n) 2T
   c n 1
  2 
 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

2kT(n/2k) + (2k - 1)c
 c n 1
  n
T (n) 2T
   c n 1
  2 
 So far for n > 2k we have
 T(n) = 2kT(n/2k) + (2k - 1)c
 What if k = lg n?
 T(n) = 2lg n T(n/2lg n) + (2lg n - 1)c
= n T(n/n) + (n - 1)c
= n T(1) + (n-1)c
= nc + (n-1)c = (2n - 1)c

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy