Chapter 04
Chapter 04
Lecture 4: Quicksort
Content has been extracted from Introduction to Algorithms, Fourth Edition, by Cormen,
Leiserson, Rivest, and Stein. MIT Press. 2022.
Visit [Link]
Original slides from Introduction to Algorithms 6.046J/18.401J, Fall 2005 Class by Prof. Charles
Leiserson and Prof. Erik Demaine. MIT OpenCourseWare Initiative available at
[Link]
Description of Quicksort
Partitioning
Worst-case Analysis
Intuition
Randomized Quicksort
Analysis
Description of Quicksort
Partitioning
Worst-case Analysis
Intuition
Randomized Quicksort
Analysis
Description of Quicksort
Partitioning
Worst-case Analysis
Intuition
Randomized Quicksort
Analysis
Invariants:
≤ x > x ? x
p i j r
Introduction to Algorithms: L4 Quicksort 8 / 56
Loop Invariants: Definition
≤ x > x ? x
p i j r
Initialization:
▶ Before first iteration: i = p − 1, j = p.
▶ No values yet examined, so invariants hold trivially.
▶ Line 2 ensures pivot condition (3) holds.
Maintenance:
▶ If A[j] > x: only increment j, preserving high side property.
▶ If A[j] ≤ x: increment i, swap A[i] and A[j], then
increment j.
▶ Swapping ensures A[i] ≤ x and A[i + 1] . . . A[j − 1] > x.
Termination:
▶ Loop ends when j = r.
▶ The unexamined subarray A[j . . . r − 1] is empty.
▶ All entries are in one of the three invariant regions.
Correctness:
▶ Array is partitioned into:
1. Elements ≤ x (low side).
2. Elements > x (high side).
▶ Pivot is placed immediately after the low side.
Chapter 7 Quicksort
p i j r
x
≤x >x unknown
p i j r
(a)
Introduction to Algorithms: L4 Quicksort >x x / 56
12
tan values in AŒp W i � are all less than or equal to x , the blue values in AŒi C 1 j
W 1�
Handling x , the white
thanCases values in AŒj
During r 1� have unknown relationships to x , and AŒr � x
Partition W D
p i j r
(a) >x x
≤x >x
p i j r
x
≤x >x
p i j r
(b) ≤x x
≤x >x
p i j r
x
≤x >x
p,i j r
(b) 2 8 7 1 3 5 6 4
p,i j r
(c) 2 8 7 1 3 5 6 4
p,i j r
(d) 2 8 7 1 3 5 6 4
p i j r
(e) 2 1 7 8 3 5 6 4
p i j r
(f) 2 1 3 8 7 5 6 4
p i j r
(g) 2 1 3 8 7 5 6 4
p i r
(h) 2 1 3 8 7 5 6 4
p i r
(i) 2 1 3 4 7 5 6 8
Introduction to Algorithms: L4 Quicksort 14 / 56
7.1 Description of quicksort
Example of partitioning
i p,j r
(a) 2 8 7 1 3 5 6 4
p,i j r
(b) 2 8 7 1 3 5 6 4
p,i j r
(c) 2 8 7 1 3 5 6 4
p,i j r
(d) 2 8 7 1 3 5 6 4
p i j r
(e) 2 1 7 8 3 5 6 4
p i j r
(f) 2 1 3 8 7 5 6 4
p i j r
(g) 2 1 3 8 7 5 6 4
p i r
(h) 2 1 3 8 7 5 6 4
p i r
(i) 2 1 3 4 7 5 6 8
Introduction to Algorithms: L4 Quicksort 14 / 56
7.1 Description of quicksort
Example of partitioning
i p,j r
(a) 2 8 7 1 3 5 6 4
p,i j r
(b) 2 8 7 1 3 5 6 4
p,i j r
(c) 2 8 7 1 3 5 6 4
p,i j r
(d) 2 8 7 1 3 5 6 4
p i j r
(e) 2 1 7 8 3 5 6 4
p i j r
(f) 2 1 3 8 7 5 6 4
p i j r
(g) 2 1 3 8 7 5 6 4
p i r
(h) 2 1 3 8 7 5 6 4
p i r
(i) 2 1 3 4 7 5 6 8
Introduction to Algorithms: L4 Quicksort 14 / 56
7.1 Description of quicksort
Example of partitioning
i p,j r
(a) 2 8 7 1 3 5 6 4
p,i j r
(b) 2 8 7 1 3 5 6 4
p,i j r
(c) 2 8 7 1 3 5 6 4
p,i j r
(d) 2 8 7 1 3 5 6 4
p i j r
(e) 2 1 7 8 3 5 6 4
p i j r
(f) 2 1 3 8 7 5 6 4
p i j r
(g) 2 1 3 8 7 5 6 4
p i r
(h) 2 1 3 8 7 5 6 4
p i r
(i) 2 1 3 4 7 5 6 8
Introduction to Algorithms: L4 Quicksort 14 / 56
7.1 Description of quicksort
Example of partitioning
i p,j r
(a) 2 8 7 1 3 5 6 4
p,i j r
(b) 2 8 7 1 3 5 6 4
p,i j r
(c) 2 8 7 1 3 5 6 4
p,i j r
(d) 2 8 7 1 3 5 6 4
p i j r
(e) 2 1 7 8 3 5 6 4
p i j r
(f) 2 1 3 8 7 5 6 4
p i j r
(g) 2 1 3 8 7 5 6 4
p i r
(h) 2 1 3 8 7 5 6 4
p i r
(i) 2 1 3 4 7 5 6 8
Introduction to Algorithms: L4 Quicksort 14 / 56
7.1 Description of quicksort
Example of partitioning
i p,j r
(a) 2 8 7 1 3 5 6 4
p,i j r
(b) 2 8 7 1 3 5 6 4
p,i j r
(c) 2 8 7 1 3 5 6 4
p,i j r
(d) 2 8 7 1 3 5 6 4
p i j r
(e) 2 1 7 8 3 5 6 4
p i j r
(f) 2 1 3 8 7 5 6 4
p i j r
(g) 2 1 3 8 7 5 6 4
p i r
(h) 2 1 3 8 7 5 6 4
p i r
(i) 2 1 3 4 7 5 6 8
Introduction to Algorithms: L4 Quicksort 14 / 56
7.1 Description of quicksort
Example of partitioning
i p,j r
(a) 2 8 7 1 3 5 6 4
p,i j r
(b) 2 8 7 1 3 5 6 4
p,i j r
(c) 2 8 7 1 3 5 6 4
p,i j r
(d) 2 8 7 1 3 5 6 4
p i j r
(e) 2 1 7 8 3 5 6 4
p i j r
(f) 2 1 3 8 7 5 6 4
p i j r
(g) 2 1 3 8 7 5 6 4
p i r
(h) 2 1 3 8 7 5 6 4
p i r
(i) 2 1 3 4 7 5 6 8
Introduction to Algorithms: L4 Quicksort 14 / 56
7.1 Description of quicksort
Example of partitioning
i p,j r
(a) 2 8 7 1 3 5 6 4
p,i j r
(b) 2 8 7 1 3 5 6 4
p,i j r
(c) 2 8 7 1 3 5 6 4
p,i j r
(d) 2 8 7 1 3 5 6 4
p i j r
(e) 2 1 7 8 3 5 6 4
p i j r
(f) 2 1 3 8 7 5 6 4
p i j r
(g) 2 1 3 8 7 5 6 4
p i r
(h) 2 1 3 8 7 5 6 4
p i r
(i) 2 1 3 4 7 5 6 8
Introduction to Algorithms: L4 Quicksort 14 / 56
7.1 Description of quicksort
Example of partitioning
i p,j r
(a) 2 8 7 1 3 5 6 4
p,i j r
(b) 2 8 7 1 3 5 6 4
p,i j r
(c) 2 8 7 1 3 5 6 4
p,i j r
(d) 2 8 7 1 3 5 6 4
p i j r
(e) 2 1 7 8 3 5 6 4
p i j r
(f) 2 1 3 8 7 5 6 4
p i j r
(g) 2 1 3 8 7 5 6 4
p i r
(h) 2 1 3 8 7 5 6 4
p i r
(i) 2 1 3 4 7 5 6 8
Introduction to Algorithms: L4 Quicksort 14 / 56
Pseudocode for Quicksort
1: procedure Quicksort(A, p, r)
2: if p < r then
3: q ← Partition(A,p, r)
4: Quicksort(A, p, q − 1)
5: Quicksort(A, q + 1, r)
6: end if
7: end procedure
1: procedure Quicksort(A, p, r)
2: if p < r then
3: q ← Partition(A,p, r)
4: Quicksort(A, p, q − 1)
5: Quicksort(A, q + 1, r)
6: end if
7: end procedure
Initial call:
Quicksort(A, 1, n)
Description of Quicksort
Partitioning
Worst-case Analysis
Intuition
Randomized Quicksort
Analysis
September 21, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L4.20
Introduction to Algorithms: L4 Quicksort 19 / 56
Worst-case Recursion Tree
September 21, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L4.21
Introduction to Algorithms: L4 Quicksort 20 / 56
Worst-case Recursion Tree
September 21, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L4.22
Introduction to Algorithms: L4 Quicksort 21 / 56
Worst-case Recursion Tree
September 21, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L4.23
Introduction to Algorithms: L4 Quicksort 22 / 56
Worst-case Recursion Tree
Θ(1)
September 21, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L4.24
Introduction to Algorithms: L4 Quicksort 23 / 56
Worst-case Recursion Tree
Θ(1)
September 21, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L4.25
Introduction to Algorithms: L4 Quicksort 24 / 56
Worst-case Recursion Tree
Θ(1)
September 21, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L4.26
Introduction to Algorithms: L4 Quicksort 25 / 56
Plan
Description of Quicksort
Partitioning
Worst-case Analysis
Intuition
Randomized Quicksort
Analysis
▶ Same as merge-sort.
▶ Same as merge-sort.
▶ Which case is this?
▶ Same as merge-sort.
▶ Which case is this? Case 2.
▶ Same as merge-sort.
▶ Which case is this? Case 2.
1 9
What if the split is always 10 : 10 ?
▶ Same as merge-sort.
▶ Which case is this? Case 2.
1 9
What if the split is always 10 : 10 ?
1 9
T (n) =T n +T n + Θ(n)
10 10
September 21, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L4.28
September 21, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L4.29
T (100
1
n ) T (100
9
n ) T (100
9
n )T (100
81
n)
September 21, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L4.30
…
Θ(1) O(n)
O(n) leaves
leaves
Θ(1)
September 21, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L4.31
…
Θ(1) O(n)
O(n) leaves
leaves
Θ(n lg n) Θ(1)
Lucky! cn log10n ≤ T(n) ≤ cn log10/9n + Ο(n)
September 21, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L4.32
Solving:
n n
L(n) =2 L − 1 + Θ( ) + Θ(n)
n 2 2
=2L − 1 + Θ(n)
2
=Θ(n lg n) Lucky!
Description of Quicksort
Partitioning
Worst-case Analysis
Intuition
Randomized Quicksort
Analysis
Idea:
Partition around a random element.
▶ Running time is independent of the input order.
▶ No assumptions need to be made about the input
distribution.
▶ No specific input elicits the worst-case behavior.
▶ The worst case is determined only by the output of a
random-number generator.
Description of Quicksort
Partitioning
Worst-case Analysis
Intuition
Randomized Quicksort
Analysis
1 if Partition generates a k : n − k − 1 split,
Xk =
0 otherwise.
1 if Partition generates a k : n − k − 1 split,
Xk =
0 otherwise.
T (0) + T (n − 1) + Θ(n) if 0 : n − 1 split,
T (1) + T (n − 2) + Θ(n) if 1 : n − 2 split,
T (n) = ..
.
T (n − 1) + T (0) + Θ(n) if n − 1 : 0 split.
n−1
P
= Xk (T (k) + T (n − k − 1) + Θ(n))
k=0
Description of Quicksort
Partitioning
Worst-case Analysis
Intuition
Randomized Quicksort
Analysis
"n−1 #
X
E[T (n)] = E Xk (T (k) + T (n − k − 1) + Θ(n))
k=0
"n−1 #
X
E[T (n)] = E Xk (T (k) + T (n − k − 1) + Θ(n))
k=0
n−1
X
= E [Xk (T (k) + T (n − k − 1) + Θ(n))]
k=0
"n−1 #
X
E[T (n)] = E Xk (T (k) + T (n − k − 1) + Θ(n))
k=0
n−1
X
= E [Xk (T (k) + T (n − k − 1) + Θ(n))]
k=0
n−1
X
= E[Xk ] · E[T (k) + T (n − k − 1) + Θ(n)]
k=0
"n−1 #
X
E[T (n)] = E Xk (T (k) + T (n − k − 1) + Θ(n))
k=0
n−1
X
= E [Xk (T (k) + T (n − k − 1) + Θ(n))]
k=0
n−1
X
= E[Xk ] · E[T (k) + T (n − k − 1) + Θ(n)]
k=0
n−1
1 X
= E[T (k) + T (n − k − 1) + Θ(n)]
n
k=0
"n−1 #
X
E[T (n)] = E Xk (T (k) + T (n − k − 1) + Θ(n))
k=0
n−1
X
= E [Xk (T (k) + T (n − k − 1) + Θ(n))]
k=0
n−1
X
= E[Xk ] · E[T (k) + T (n − k − 1) + Θ(n)]
k=0
n−1 n−1 n−1
1 X 1X 1X
= E[T (k)] + E[T (n − k − 1)] + Θ(n)
n n n
k=0 k=0 k=0
"n−1 #
X
E[T (n)] = E Xk (T (k) + T (n − k − 1) + Θ(n))
k=0
n−1
X
= E [Xk (T (k) + T (n − k − 1) + Θ(n))]
k=0
n−1
X
= E[Xk ] · E[T (k) + T (n − k − 1) + Θ(n)]
k=0
n−1 n−1 n−1
1 X 1X 1X
= E[T (k)] + E[T (n − k − 1)] + Θ(n)
n n n
k=0 k=0 k=0
n−1 n−1
2 X 1 X
= E[T (k)] + Θ(n)
n n
k=0 k=0
"n−1 #
X
E[T (n)] = E Xk (T (k) + T (n − k − 1) + Θ(n))
k=0
n−1
X
= E [Xk (T (k) + T (n − k − 1) + Θ(n))]
k=0
n−1
X
= E[Xk ] · E[T (k) + T (n − k − 1) + Θ(n)]
k=0
n−1 n−1 n−1
1 X 1X 1X
= E[T (k)] + E[T (n − k − 1)] + Θ(n)
n n n
k=0 k=0 k=0
n−1
2 X 1
= E[T (k)] + Θ(n2 )
n n
k=0
"n−1 #
X
E[T (n)] = E Xk (T (k) + T (n − k − 1) + Θ(n))
k=0
n−1
X
= E [Xk (T (k) + T (n − k − 1) + Θ(n))]
k=0
n−1
X
= E[Xk ] · E[T (k) + T (n − k − 1) + Θ(n)]
k=0
n−1 n−1 n−1
1 X 1X 1X
= E[T (k)] + E[T (n − k − 1)] + Θ(n)
n n n
k=0 k=0 k=0
n−1
2 X
= E[T (k)] + Θ(n)
n
k=0
n−1
2X
E[T (n)] = E[T (k)] + Θ(n)
n
k=2
Use fact:
n−1
k lg k ≤ 12 n2 lg n − 18 n2 (exercise).
P
k=2
n−1
2X
E[T (n)] ≤ ak lg k + Θ(n)
n
k=2
n−1
2X
E[T (n)] ≤ ak lg k + Θ(n)
n
k=2
2a 1 2 1
≤ n lg n − n2 + Θ(n)
n 2 8
n−1
2X
E[T (n)] ≤ ak lg k + Θ(n)
n
k=2
2a 1 2 1 2
≤ n lg n − n + Θ(n)
n 2 8
an
= an lg n − − Θ(n)
4
≤ an lg n,
if a is chosen large enough so that
an
dominates the Θ(n).
4
Content has been extracted from Introduction to Algorithms, Fourth Edition, by Cormen,
Leiserson, Rivest, and Stein. MIT Press. 2022.
Visit [Link]
Original slides from Introduction to Algorithms 6.046J/18.401J, Fall 2005 Class by Prof. Charles
Leiserson and Prof. Erik Demaine. MIT OpenCourseWare Initiative available at
[Link]