Quick Sort Algorithm: Dry Run and Its working

SaimaGulzarAhmad 0 views 27 slides Oct 08, 2025
Slide 1
Slide 1 of 27
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27

About This Presentation

Design and Analysis of Algorithms


Slide Content

David Luebke 1
10/08/25
CS 332: Algorithms
Quicksort

David Luebke 2
10/08/25
Review: Analyzing Quicksort
What will be the worst case for the algorithm?
Partition is always unbalanced
What will be the best case for the algorithm?
Partition is balanced
Which is more likely?
The latter, by far, except...
Will any particular input elicit the worst case?
Yes: Already-sorted input

David Luebke 3
10/08/25
Review: Analyzing Quicksort
In the worst case:
T(1) = (1)
T(n) = T(n - 1) + (n)
Works out to
T(n) = (n
2
)

David Luebke 4
10/08/25
Review: Analyzing Quicksort
In the best case:
T(n) = 2T(n/2) + (n)
What does this work out to?
T(n) = (n lg n)

David Luebke 5
10/08/25
Review: Analyzing Quicksort
(Average Case)
Intuitively, a real-life run of quicksort will
produce a mix of “bad” and “good” splits
Randomly distributed among the recursion tree
Pretend for intuition that they alternate between
best-case (n/2 : n/2) and worst-case (n-1 : 1)
What happens if we bad-split root node, then
good-split the resulting size (n-1) node?

David Luebke 6
10/08/25
Review: Analyzing Quicksort
(Average Case)
Intuitively, a real-life run of quicksort will produce
a mix of “bad” and “good” splits
Randomly distributed among the recursion tree
Pretend for intuition that they alternate between best-
case (n/2 : n/2) and worst-case (n-1 : 1)
What happens if we bad-split root node, then good-split
the resulting size (n-1) node?
We end up with three subarrays, size 1, (n-1)/2, (n-1)/2
Combined cost of splits = n + n -1 = 2n -1 = O(n)
No worse than if we had good-split the root node!

David Luebke 7
10/08/25
Review: Analyzing Quicksort
(Average Case)
Intuitively, the O(n) cost of a bad split
(or 2 or 3 bad splits) can be absorbed
into the O(n) cost of each good split
Thus running time of alternating bad and good
splits is still O(n lg n), with slightly higher
constants
How can we be more rigorous?

David Luebke 8
10/08/25
Analyzing Quicksort: Average Case
For simplicity, assume:
All inputs distinct (no repeats)
Slightly different partition() procedure
partition around a random element, which is not included in
subarrays
all splits (0:n-1, 1:n-2, 2:n-3, … , n-1:0) equally likely
What is the probability of a particular split
happening?
Answer: 1/n

David Luebke 9
10/08/25
Analyzing Quicksort: Average Case
So partition generates splits
(0:n-1, 1:n-2, 2:n-3, … , n-2:1, n-1:0)
each with probability 1/n
If T(n) is the expected running time,
What is each term under the summation for?
What is the (n) term for?
   



1
0
1
1
n
k
nknTkT
n
nT

David Luebke 10
10/08/25
Analyzing Quicksort: Average Case
So…
   








1
0
1
0
2
1
1
n
k
n
k
nkT
n
nknTkT
n
nT
Write it on
the board

David Luebke 11
10/08/25
Analyzing Quicksort: Average Case
We can solve this recurrence using the dreaded
substitution method
Guess the answer
Assume that the inductive hypothesis holds
Substitute it in for some value < n
Prove that it follows for n

David Luebke 12
10/08/25
Analyzing Quicksort: Average Case
We can solve this recurrence using the dreaded
substitution method
Guess the answer
What’s the answer?
Assume that the inductive hypothesis holds
Substitute it in for some value < n
Prove that it follows for n

David Luebke 13
10/08/25
Analyzing Quicksort: Average Case
We can solve this recurrence using the dreaded
substitution method
Guess the answer
T(n) = O(n lg n)
Assume that the inductive hypothesis holds
Substitute it in for some value < n
Prove that it follows for n

David Luebke 14
10/08/25
Analyzing Quicksort: Average Case
We can solve this recurrence using the dreaded
substitution method
Guess the answer
T(n) = O(n lg n)
Assume that the inductive hypothesis holds
What’s the inductive hypothesis?
Substitute it in for some value < n
Prove that it follows for n

David Luebke 15
10/08/25
Analyzing Quicksort: Average Case
We can solve this recurrence using the dreaded
substitution method
Guess the answer
T(n) = O(n lg n)
Assume that the inductive hypothesis holds
T(n)  an lg n + b for some constants a and b
Substitute it in for some value < n
Prove that it follows for n

David Luebke 16
10/08/25
Analyzing Quicksort: Average Case
We can solve this recurrence using the dreaded
substitution method
Guess the answer
T(n) = O(n lg n)
Assume that the inductive hypothesis holds
T(n)  an lg n + b for some constants a and b
Substitute it in for some value < n
What value?
Prove that it follows for n

David Luebke 17
10/08/25
Analyzing Quicksort: Average Case
We can solve this recurrence using the dreaded
substitution method
Guess the answer
T(n) = O(n lg n)
Assume that the inductive hypothesis holds
T(n)  an lg n + b for some constants a and b
Substitute it in for some value < n
The value k in the recurrence
Prove that it follows for n

David Luebke 18
10/08/25
Analyzing Quicksort: Average Case
We can solve this recurrence using the dreaded
substitution method
Guess the answer
T(n) = O(n lg n)
Assume that the inductive hypothesis holds
T(n)  an lg n + b for some constants a and b
Substitute it in for some value < n
The value k in the recurrence
Prove that it follows for n
Grind through it…

David Luebke 19
10/08/25
Note: leaving the same
recurrence as the book
What are we doing here?
Analyzing Quicksort: Average Case
 
 
 
  
 


























1
1
1
1
1
1
1
0
1
0
lg
2
2
lg
2
lg
2
lg
2
2
n
k
n
k
n
k
n
k
n
k
nbkak
n
n
n
b
bkak
n
nbkakb
n
nbkak
n
nkT
n
nT
The recurrence to be solved
What are we doing here?
What are we doing here?
Plug in inductive hypothesis
Expand out the k=0 case
2b/n is just a constant,
so fold it into (n)

David Luebke 20
10/08/25
What are we doing here?
What are we doing here?
Evaluate the summation:
b+b+…+b = b (n-1)
The recurrence to be solved
Since n-1<n, 2b(n-1)/n < 2b
Analyzing Quicksort: Average Case
  


nbkk
n
a
nn
n
b
kk
n
a
nb
n
kak
n
nbkak
n
nT
n
k
n
k
n
k
n
k
n
k


















2lg
2
)1(
2
lg
2
2
lg
2
lg
2
1
1
1
1
1
1
1
1
1
1
What are we doing here?Distribute the summation
This summation gets its own set of slides later

David Luebke 21
10/08/25
How did we do this?
Pick a large enough that
an/4 dominates (n)+b
What are we doing here?
Remember, our goal is to get
T(n)  an lg n + b
What the hell?We’ll prove this later
What are we doing here?Distribute the (2a/n) term
The recurrence to be solved
Analyzing Quicksort: Average Case
 



bnan
n
a
bnbnan
nbn
a
nan
nbnnn
n
a
nbkk
n
a
nT
n
k



















lg
4
lg
2
4
lg
2
8
1
lg
2
12
2lg
2
22
1
1

David Luebke 22
10/08/25
Analyzing Quicksort: Average Case
So T(n)  an lg n + b for certain a and b
Thus the induction holds
Thus T(n) = O(n lg n)
Thus quicksort runs in O(n lg n) time on average
(phew!)
Oh yeah, the summation…

David Luebke 23
10/08/25
What are we doing here?
The lg k in the second term
is bounded by lg n
Tightly Bounding
The Key Summation


























1
2
12
1
1
2
12
1
1
2
12
1
1
1
lglg
lglg
lglglg
n
nk
n
k
n
nk
n
k
n
nk
n
k
n
k
knkk
nkkk
kkkkkk
What are we doing here?
Move the lg n outside the
summation
What are we doing here?
Split the summation for a
tighter bound

David Luebke 24
10/08/25
The summation bound so
far
Tightly Bounding
The Key Summation





 


 




























1
2
12
1
1
2
12
1
1
2
12
1
1
2
12
1
1
1
lg1lg
lg1lg
lg2lg
lglglg
n
nk
n
k
n
nk
n
k
n
nk
n
k
n
nk
n
k
n
k
knkn
knnk
knnk
knkkkk
What are we doing here?
The lg k in the first term is
bounded by lg n/2
What are we doing here?lg n/2 = lg n - 1
What are we doing here?
Move (lg n - 1) outside the
summation

David Luebke 25
10/08/25
The summation bound so
far
Tightly Bounding
The Key Summation
 


 




































12
1
12
1
1
1
1
2
12
1
12
1
1
2
12
1
1
1
2
)(1
lg
lg
lglg
lg1lglg
n
k
n
k
n
k
n
nk
n
k
n
k
n
nk
n
k
n
k
k
nn
n
kkn
knkkn
knknkk
What are we doing here?Distribute the (lg n - 1)
What are we doing here?
The summations overlap in
range; combine them
What are we doing here?The Guassian series

David Luebke 26
10/08/25
The summation bound so
far
Tightly Bounding
The Key Summation


 
 
 
48
1
lglg
2
1
1
222
1
lg1
2
1
lg1
2
1
lg
2
)(1
lg
22
12
1
12
1
1
1
n
nnnnn
nn
nnn
knnn
kn
nn
kk
n
k
n
k
n
k






























What are we doing here?
Rearrange first term, place
upper bound on second
What are we doing?X Guassian series
What are we doing?
Multiply it
all out

David Luebke 27
10/08/25
Tightly Bounding
The Key Summation
 
!!Done!
2when
8
1
lg
2
1
48
1
lglg
2
1
lg
22
22
1
1




nnnn
n
nnnnnkk
n
k
Tags