Divide-And-Conquer Sorting
Divide-And-Conquer Sorting
• Small instance.
n <= 1 elements.
n <= 10 elements.
We’ll use n <= 1 for now.
• Large instance.
Divide into k >= 2 smaller instances.
k = 2, 3, 4, … ?
What does each smaller instance look like?
Sort smaller instances recursively.
How do you combine the sorted smaller instances?
Insertion Sort
a[0] a[n-2] a[n-1]
• k=2
• First n - 1 elements (a[0:n-2]) define one of the
smaller instances; last element (a[n-1]) defines
the second smaller instance.
• a[0:n-2] is sorted recursively.
• a[n-1] is a small instance.
Insertion Sort
a[0] a[n-2] a[n-1]
[8] [3] [13] [6] [2] [14] [5] [9] [10] [1] [7] [12] [4]
[3, [6, 13] [2, 14] [5, [1, 10] [7, 12] [4]
8] 9]
[3, 6, 8, 13] [2, 5, 9, 14] [1, 7, 10, [4]
12]
[2, 3, 5, 6, 8, 9, 13, 14] [1, 4, 7, 10, 12]
6 2 8 5 11 10 4 1 9 7 3
10 11
pivot
Partitioning Example Using
Additional Array
a 6 2 8 5 11 10 4 1 9 7 3
b 10 11
a 6 2 3 5 11 10 4 1 9 7 8
a 6 2 3 5 1 10 4 11 9 7 8
a 6 2 3 5 1 4 10
10 11 9 7 8