






Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Material Type: Notes; Professor: Galles; Class: Data Struct & Algorithms; Subject: Computer Science; University: University of San Francisco (CA); Term: Intersession 2009;
Typology: Study notes
1 / 10
This page cannot be seen from the preview
Don't miss anything!







11-0: Merge Sort – Recursive Sorting
Example: 5 1 8 2 6 4 3 7 11-1: Merging
Example: 1 2 5 8 and 3 4 6 7
11-2: Θ() for Merge Sort
T (0) = c 1 for some constant c 1 T (1) = c 2 for some constant c 2 T (n) = nc 3 + 2T (n/2) for some constant c 3 T (n) = nc 3 + 2T (n/2)
11-3: Θ() for Merge Sort
T (0) = c 1 for some constant c 1 T (1) = c 2 for some constant c 2 T (n) = nc 3 + 2T (n/2) for some constant c 3 T (n) = nc 3 + 2T (n/2) = nc 3 + 2(n/ 2 c 3 + 2T (n/4)) = 2nc 3 + 4T (n/4)
11-4: Θ() for Merge Sort
T (0) = c 1 for some constant c 1 T (1) = c 2 for some constant c 2 T (n) = nc 3 + 2T (n/2) for some constant c 3 T (n) = nc 3 + 2T (n/2) = nc 3 + 2(n/ 2 c 3 + 2T (n/4)) = 2nc 3 + 4T (n/4) = 2nc 3 + 4(n/ 4 c 3 + 2T (n/8)) = 3nc 3 + 8T (n/8))
11-5: Θ() for Merge Sort
T (0) = c 1 for some constant c 1 T (1) = c 2 for some constant c 2 T (n) = nc 3 + 2T (n/2) for some constant c 3
T (n) = nc 3 + 2T (n/2) = nc 3 + 2(n/ 2 c 3 + 2T (n/4)) = 2nc 3 + 4T (n/4) = 2nc 3 + 4(n/ 4 c 3 + 2T (n/8)) = 3nc 3 + 8T (n/8)) = 3nc 3 + 8(n/ 8 c 3 + 2T (n/16)) = 4nc 3 + 16T (n/16)
11-6: Θ() for Merge Sort
T (0) = c 1 for some constant c 1 T (1) = c 2 for some constant c 2 T (n) = nc 3 + 2T (n/2) for some constant c 3 T (n) = nc 3 + 2T (n/2) = nc 3 + 2(n/ 2 c 3 + 2T (n/4)) = 2nc 3 + 4T (n/4) = 2nc 3 + 4(n/ 4 c 3 + 2T (n/8)) = 3nc 3 + 8T (n/8)) = 3nc 3 + 8(n/ 8 c 3 + 2T (n/16)) = 4nc 3 + 16T (n/16) = 5nc 3 + 32T (n/32)
11-7: Θ() for Merge Sort
T (0) = c 1 for some constant c 1 T (1) = c 2 for some constant c 2 T (n) = nc 3 + 2T (n/2) for some constant c 3 T (n) = nc 3 + 2T (n/2) = nc 3 + 2(n/ 2 c 3 + 2T (n/4)) = 2nc 3 + 4T (n/4) = 2nc 3 + 4(n/ 4 c 3 + 2T (n/8)) = 3nc 3 + 8T (n/8)) = 3nc 3 + 8(n/ 8 c 3 + 2T (n/16)) = 4nc 3 + 16T (n/16) = 5nc 3 + 32T (n/32) = knc 3 + 2kT (n/ 2 k) 11-8: Θ() for Merge Sort
T (0) = c 1 T (1) = c 2 T (n) = knc 3 + 2kT (n/ 2 k) Pick a value for k such that n/ 2 k^ = 1: n/ 2 k^ = 1 n = 2 k lg n = k T (n) = (lg n)nc 3 + 2lg^ nT (n/ 2 lg^ n) = c 3 n lg n + nT (n/n) = c 3 n lg n + nT (1) = c 3 n lg n + c 2 n ∈ O(n lg n)
11-9: Θ() for Merge Sort
11-10: Θ() for Merge Sort
c*n
c(n/2) c(n/2)
c(n/4) c(n/4) c(n/4) c(n/4)
c*n
c*n
c*n
c*n
lg n levels
... (^) ... (^) ... ...
Total time = c*n lg n Θ(n lg n)
11-15: Divide & Conquer Merge Sort:
11-16: Divide & Conquer Quick Sort:
11-17: Quick Sort
Example: 3 7 2 8 1 4 6 11-18: Quick Sort - Partitioning Basic Idea:
11-19: Quick Sort - Partitioning Pseudocode:
11-20: Θ() for Quick Sort
size 0 , size n − 1 size 1 , size n − 2
... size ⌊(n − 1)/ 2 ⌋, size ⌈(n − 1)/ 2 ⌉ ... size n − 2 , size 1 size n − 1 , size 0
T (n) = T (n − k) + (
∑k− 1 i=0 (n^ −^ i)c^3 ) +^ kc^2 = T (n − n) + (
∑n− 1 i=0 (n^ −^ i)c^3 ) +^ kc^2 = T (0) + (
∑n− 1 i=0 (n^ −^ i)c^3 ) +^ kc^2 = T (0) + (
∑n− 1 i=0 ic^3 ) +^ kc^2 = c 1 + c 3 n(n + 1)/2 + kc 2 ∈ Θ(n^2 ) 11-28: Θ() for Quick Sort
11-29: Θ() for Quick Sort
c*n
T(n-1) T(0)
11-30: Θ() for Quick Sort
c*n
c*(n-1) c
T(n-2) T(0)
11-31: Θ() for Quick Sort
c*n
c*(n-1) c
c*(n-2) c
T(n-3) T(0)
11-32: Θ() for Quick Sort
11-33: Θ() for Quick Sort
11-34: Θ() for Quick Sort
Best case performance occurs when break list into size ⌊(n − 1)/ 2 ⌋ and size ⌈(n − 1)/ 2 ⌉ T (0) = c 1 for some constant c 1 T (1) = c 2 for some constant c 2 T (n) = nc 3 + 2T (n/2) for some constant c 3
This is the same as Merge Sort: Θ(n lg n) 11-35: Quick Sort? If Quicksort is Θ(n^2 ) on some lists, why is it called quick?
11-36: Quick Sort?
If Quicksort is Θ(n^2 ) on some lists, why is it called quick?
11-42: Heap Sort
Example: 3 1 7 2 5 4 11-43: Θ() for Heap Sort