SlideShare a Scribd company logo
Algorithms Analysis
Lecture 6
Quicksort
Quick Sort
88
14
9825
62
52
79
30
23
31
Divide and Conquer
Quick Sort
88
14
9825
62
52
79
30
23
31
Partition set into two using
randomly chosen pivot
14
25
30
2331
88
98
62
79
≤ 52 ≤
Quick Sort
14
25
30
2331
88
98
62
79
≤ 52 ≤
14,23,25,30,31
sort the first half.
62,79,98,88
sort the second half.
Quick Sort
14,23,25,30,31
62,79,88,98
52
Glue pieces together.
14,23,25,30,31,52,62,79,88,98
Quicksort
• Quicksort pros [advantage]:
– Sorts in place
– Sorts O(n lg n) in the average case
– Very efficient in practice , it’s quick
• Quicksort cons [disadvantage]:
– Sorts O(n2
) in the worst case
– And the worst case doesn’t happen often … sorted
Quicksort
• Another divide-and-conquer algorithm:
• Divide: A[p…r] is partitioned (rearranged) into two
nonempty subarrays A[p…q-1] and A[q+1…r] s.t.
each element of A[p…q-1] is less than or equal to
each element of A[q+1…r]. Index q is computed here,
called pivot.
• Conquer: two subarrays are sorted by recursive calls
to quicksort.
• Combine: unlike merge sort, no work needed since
the subarrays are sorted in place already.
Quicksort
• The basic algorithm to sort an array A consists of the following four
easy steps:
– If the number of elements in A is 0 or 1, then return
– Pick any element v in A. This is called the pivot
– Partition A-{v} (the remaining elements in A) into two disjoint
groups:
• A1 = {x ∈ A-{v} | x ≤ v}, and
• A2 = {x ∈ A-{v} | x ≥ v}
– return
• { quicksort(A1) followed by v followed by
quicksort(A2)}
Quicksort
• Small instance has n ≤ 1
– Every small instance is a sorted instance
• To sort a large instance:
– select a pivot element from out of the n elements
• Partition the n elements into 3 groups left, middle and
right
– The middle group contains only the pivot element
– All elements in the left group are ≤ pivot
– All elements in the right group are ≥ pivot
• Sort left and right groups recursively
• Answer is sorted left group, followed by middle group
followed by sorted right group
Quicksort Code
P: first element
r: last element
Quicksort(A, p, r)
{
if (p < r)
{
q = Partition(A, p, r)
Quicksort(A, p , q-1)
Quicksort(A, q+1 , r)
}
}
• Initial call is Quicksort(A, 1, n), where n in the length of A
Partition
• Clearly, all the action takes place in the
partition() function
– Rearranges the subarray in place
– End result:
• Two subarrays
• All values in first subarray ≤ all values in second
– Returns the index of the “pivot” element
separating the two subarrays
Partition Code
Partition(A, p, r)
{
x = A[r] // x is pivot
i = p - 1
for j = p to r – 1
{
do if A[j] <= x
then
{
i = i + 1
exchange A[i] ↔ A[j]
}
}
exchange A[i+1] ↔ A[r]
return i+1
}
partition() runs in O(n) time
Partition Example
A = {2, 8, 7, 1, 3, 5, 6, 4{
2 8 7 1 3 5 62 8 7 1 3 5 6 44
rp ji
2 8 7 1 3 5 62 8 7 1 3 5 6 44
rp i j
rp i j
2 8 7 1 3 5 62 8 7 1 3 5 6 44
rp i j
8822 77 11 33 55 66 44
rp j
1122 77 88 33 55 66 44
i rp j
1122 33 88 77 55 66 44
i
rp j
1122 33 88 77 55 66 44
i rp
1122 33 88 77 55 66 44
i
rp
1122 33 44 77 55 66 88
i
22
22
22 22
22 22
22
11
11 33
33 11 33
11 33
Partition Example Explanation
• Red shaded elements are in the first partition
with values ≤ x (pivot)
• Gray shaded elements are in the second
partition with values ≥ x (pivot)
• The unshaded elements have no yet been put in
one of the first two partitions
• The final white element is the pivot
Choice Of Pivot
Three ways to choose the pivot:
• Pivot is rightmost element in list that is to be sorted
– When sorting A[6:20], use A[20] as the pivot
– Textbook implementation does this
• Randomly select one of the elements to be sorted as
the pivot
– When sorting A[6:20], generate a random number r in
the range [6, 20]
– Use A[r] as the pivot
Choice Of Pivot
• Median-of-Three rule - from the leftmost, middle, and rightmost
elements of the list to be sorted, select the one with median key as
the pivot
– When sorting A[6:20], examine A[6], A[13] ((6+20)/2), and A[20]
– Select the element with median (i.e., middle) key
– If A[6].key = 30, A[13].key = 2, and A[20].key = 10, A[20]
becomes the pivot
– If A[6].key = 3, A[13].key = 2, and A[20].key = 10, A[6] becomes
the pivot
Worst Case Partitioning
• The running time of quicksort depends on whether the partitioning is
balanced or not.
∀ Θ(n) time to partition an array of n elements
• Let T(n) be the time needed to sort n elements
• T(0) = T(1) = c, where c is a constant
• When n > 1,
– T(n) = T(|left|) + T(|right|) + Θ(n)
• T(n) is maximum (worst-case) when either |left| = 0 or |right| = 0
following each partitioning
Worst Case Partitioning
Worst Case Partitioning
• Worst-Case Performance (unbalanced):
– T(n) = T(1) + T(n-1) + Θ(n)
• partitioning takes Θ(n)
= [2 + 3 + 4 + …+ n-1 + n ]+ n =
= [∑k = 2 to n k ]+ n = Θ(n2
)
• This occurs when
– the input is completely sorted
• or when
– the pivot is always the smallest (largest) element
)(2/)1(...21 2
1
nnnnk
n
k
Θ=+=+++=∑=
Best Case Partition
• When the partitioning procedure produces two regions of
size n/2, we get the a balanced partition with best case
performance:
– T(n) = 2T(n/2) + Θ(n) = Θ(n lg n)
• Average complexity is also Θ(n lg n)
Best Case Partitioning
Average Case
• Assuming random input, average-case running time is
much closer to Θ(n lg n) than Θ(n2
)
• First, a more intuitive explanation/example:
– Suppose that partition() always produces a 9-to-1
proportional split. This looks quite unbalanced!
– The recurrence is thus:
T(n) = T(9n/10) + T(n/10) + Θ(n) = Θ(nlg n)?
[Using recursion tree method to solve]
Average Case
( ) ( /10) (9 /10) ( ) ( log )!T n T n T n n n n= + + Θ = Θ
log2n = log10n/log102
Average Case
• Every level of the tree has cost cn, until a boundary condition
is reached at depth log10 n = Θ( lgn), and then the levels have
cost at most cn.
• The recursion terminates at depth log10/9 n= Θ(lg n).
• The total cost of quicksort is therefore O(n lg n).
Average Case
• 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 = Θ(n)
n
1 n-1
(n-1)/2 (n-1)/2
( )nΘ
(n-1)/2 (n-1)/2
n ( )nΘ
)1( −Θ n
Intuition for the Average Case
• Suppose, we alternate lucky and unlucky cases to get
an average behavior
( ) 2 ( / 2) ( ) lucky
( ) ( 1) ( ) unlucky
we consequently get
( ) 2( ( / 2 1) ( / 2)) ( )
2 ( /2 1) ( )
( log )
L n U n n
U n L n n
L n L n n n
L n n
n n
= + Θ
= − + Θ
= − + Θ + Θ
= − + Θ
= Θ
The combination of good and bad splits would result in
T(n) = O (n lg n), but with slightly larger constant hidden by
the O-notation.
Randomized Quicksort
• An algorithm is randomized if its behavior is determined
not only by the input but also by values produced by a
random-number generator.
• Exchange A[r] with an element chosen at random from
A[p…r] in Partition.
• This ensures that the pivot element is equally likely to be
any of input elements.
• We can sometimes add randomization to an algorithm in
order to obtain good average-case performance over all
inputs.
Randomized Quicksort
Randomized-Partition(A, p, r)
1. i ← Random(p, r)
2. exchange A[r] ↔ A[i]
3. return Partition(A, p, r)
Randomized-Quicksort(A, p, r)
1. if p < r
2. then q ← Randomized-Partition(A, p, r)
3. Randomized-Quicksort(A, p , q-1)
4. Randomized-Quicksort(A, q+1, r)
pivot
swap
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
Summary: Quicksort
• In worst-case, efficiency is Θ(n2
)
– But easy to avoid the worst-case
• On average, efficiency is Θ(n lg n)
• Better space-complexity than mergesort.
• In practice, runs fast and widely used

More Related Content

PPTX
Merge sort algorithm
PPTX
Divide and Conquer - Part 1
PPTX
Divide and conquer 1
PDF
Algorithms Lecture 2: Analysis of Algorithms I
PPTX
Marge Sort
PPT
Heap sort
PDF
Daa notes 1
PPT
Medians and order statistics
Merge sort algorithm
Divide and Conquer - Part 1
Divide and conquer 1
Algorithms Lecture 2: Analysis of Algorithms I
Marge Sort
Heap sort
Daa notes 1
Medians and order statistics

What's hot (20)

PPTX
Asymptotic Notations
PPT
Design and Analysis of Algorithms
PPTX
Quick sort
PPTX
Breadth First Search & Depth First Search
PPTX
Bruteforce algorithm
PDF
Divide and Conquer
PPT
Dinive conquer algorithm
PDF
DAA Notes.pdf
PPTX
Data Structure and Algorithms Merge Sort
PPTX
Merge sort algorithm power point presentation
PPTX
single linked list
PPTX
Hashing Technique In Data Structures
PPTX
strassen matrix multiplication algorithm
PPTX
Divide and conquer - Quick sort
PPTX
Asymptotic Notation
PPTX
Bellman ford algorithm
PPT
Time complexity
PPTX
Prim's algorithm
PPTX
Quick sort-Data Structure
PPTX
Merge Sort
Asymptotic Notations
Design and Analysis of Algorithms
Quick sort
Breadth First Search & Depth First Search
Bruteforce algorithm
Divide and Conquer
Dinive conquer algorithm
DAA Notes.pdf
Data Structure and Algorithms Merge Sort
Merge sort algorithm power point presentation
single linked list
Hashing Technique In Data Structures
strassen matrix multiplication algorithm
Divide and conquer - Quick sort
Asymptotic Notation
Bellman ford algorithm
Time complexity
Prim's algorithm
Quick sort-Data Structure
Merge Sort
Ad

Viewers also liked (11)

PDF
Intersection Study - Algorithm(Sort)
PPTX
Lecture 6-cs648 Randomized Algorithms
PPT
Quick Sort
PDF
Quick Sort , Merge Sort , Heap Sort
PDF
Quicksort: illustrated step-by-step walk through
PPT
Safe laparoscopy
PPTX
Insertion and merge sort
PDF
Insertion Sort Algorithm
PPT
3.8 quicksort
PPT
Algorithm: Quick-Sort
Intersection Study - Algorithm(Sort)
Lecture 6-cs648 Randomized Algorithms
Quick Sort
Quick Sort , Merge Sort , Heap Sort
Quicksort: illustrated step-by-step walk through
Safe laparoscopy
Insertion and merge sort
Insertion Sort Algorithm
3.8 quicksort
Algorithm: Quick-Sort
Ad

Similar to Quick sort Algorithm Discussion And Analysis (20)

PPTX
Algorithms - "quicksort"
PPTX
CSE680-07QuickSort.pptx
PPTX
quick sort by deepak.pptx
PPT
s4_quick_sort.ppt
PPT
Quick Sort
PPTX
09 QUICK SORT Design and Analysis of algorithms
PDF
Quick sort
PPTX
Quick sort.pptx
PPTX
Quick sort by Sania Nisar
PPT
quick_sort_with_explanationandImplmentation.ppt
PPTX
jyothi(22D21A0547)DAA.pptx in DAA computer
PPT
quicksort (1).ppt
PDF
Class13_Quicksort_Algorithm.pdf
PPTX
Quick sort
PPTX
Quick sort
PPTX
Quicksort Algorithm..simply defined through animations..!!
PDF
Quick sort algorithn
PPT
Randomizing quicksort algorith with example
PPTX
Quick sort
PPT
lecture7.ppt
Algorithms - "quicksort"
CSE680-07QuickSort.pptx
quick sort by deepak.pptx
s4_quick_sort.ppt
Quick Sort
09 QUICK SORT Design and Analysis of algorithms
Quick sort
Quick sort.pptx
Quick sort by Sania Nisar
quick_sort_with_explanationandImplmentation.ppt
jyothi(22D21A0547)DAA.pptx in DAA computer
quicksort (1).ppt
Class13_Quicksort_Algorithm.pdf
Quick sort
Quick sort
Quicksort Algorithm..simply defined through animations..!!
Quick sort algorithn
Randomizing quicksort algorith with example
Quick sort
lecture7.ppt

Recently uploaded (20)

PDF
SM_6th-Sem__Cse_Internet-of-Things.pdf IOT
PDF
Embodied AI: Ushering in the Next Era of Intelligent Systems
PDF
Monitoring Global Terrestrial Surface Water Height using Remote Sensing - ARS...
PPTX
Lesson 3_Tessellation.pptx finite Mathematics
PPTX
UNIT-1 - COAL BASED THERMAL POWER PLANTS
PPTX
24AI201_AI_Unit_4 (1).pptx Artificial intelligence
PPTX
436813905-LNG-Process-Overview-Short.pptx
PDF
Model Code of Practice - Construction Work - 21102022 .pdf
PPTX
Strings in CPP - Strings in C++ are sequences of characters used to store and...
PDF
ETO & MEO Certificate of Competency Questions and Answers
PDF
Geotechnical Engineering, Soil mechanics- Soil Testing.pdf
PPTX
Practice Questions on recent development part 1.pptx
PPTX
The-Looming-Shadow-How-AI-Poses-Dangers-to-Humanity.pptx
PPTX
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
PDF
Arduino robotics embedded978-1-4302-3184-4.pdf
PPTX
Geodesy 1.pptx...............................................
PPTX
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx
PPTX
Internship_Presentation_Final engineering.pptx
PDF
Queuing formulas to evaluate throughputs and servers
PPTX
AgentX UiPath Community Webinar series - Delhi
SM_6th-Sem__Cse_Internet-of-Things.pdf IOT
Embodied AI: Ushering in the Next Era of Intelligent Systems
Monitoring Global Terrestrial Surface Water Height using Remote Sensing - ARS...
Lesson 3_Tessellation.pptx finite Mathematics
UNIT-1 - COAL BASED THERMAL POWER PLANTS
24AI201_AI_Unit_4 (1).pptx Artificial intelligence
436813905-LNG-Process-Overview-Short.pptx
Model Code of Practice - Construction Work - 21102022 .pdf
Strings in CPP - Strings in C++ are sequences of characters used to store and...
ETO & MEO Certificate of Competency Questions and Answers
Geotechnical Engineering, Soil mechanics- Soil Testing.pdf
Practice Questions on recent development part 1.pptx
The-Looming-Shadow-How-AI-Poses-Dangers-to-Humanity.pptx
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
Arduino robotics embedded978-1-4302-3184-4.pdf
Geodesy 1.pptx...............................................
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx
Internship_Presentation_Final engineering.pptx
Queuing formulas to evaluate throughputs and servers
AgentX UiPath Community Webinar series - Delhi

Quick sort Algorithm Discussion And Analysis

  • 3. Quick Sort 88 14 9825 62 52 79 30 23 31 Partition set into two using randomly chosen pivot 14 25 30 2331 88 98 62 79 ≤ 52 ≤
  • 4. Quick Sort 14 25 30 2331 88 98 62 79 ≤ 52 ≤ 14,23,25,30,31 sort the first half. 62,79,98,88 sort the second half.
  • 5. Quick Sort 14,23,25,30,31 62,79,88,98 52 Glue pieces together. 14,23,25,30,31,52,62,79,88,98
  • 6. Quicksort • Quicksort pros [advantage]: – Sorts in place – Sorts O(n lg n) in the average case – Very efficient in practice , it’s quick • Quicksort cons [disadvantage]: – Sorts O(n2 ) in the worst case – And the worst case doesn’t happen often … sorted
  • 7. Quicksort • Another divide-and-conquer algorithm: • Divide: A[p…r] is partitioned (rearranged) into two nonempty subarrays A[p…q-1] and A[q+1…r] s.t. each element of A[p…q-1] is less than or equal to each element of A[q+1…r]. Index q is computed here, called pivot. • Conquer: two subarrays are sorted by recursive calls to quicksort. • Combine: unlike merge sort, no work needed since the subarrays are sorted in place already.
  • 8. Quicksort • The basic algorithm to sort an array A consists of the following four easy steps: – If the number of elements in A is 0 or 1, then return – Pick any element v in A. This is called the pivot – Partition A-{v} (the remaining elements in A) into two disjoint groups: • A1 = {x ∈ A-{v} | x ≤ v}, and • A2 = {x ∈ A-{v} | x ≥ v} – return • { quicksort(A1) followed by v followed by quicksort(A2)}
  • 9. Quicksort • Small instance has n ≤ 1 – Every small instance is a sorted instance • To sort a large instance: – select a pivot element from out of the n elements • Partition the n elements into 3 groups left, middle and right – The middle group contains only the pivot element – All elements in the left group are ≤ pivot – All elements in the right group are ≥ pivot • Sort left and right groups recursively • Answer is sorted left group, followed by middle group followed by sorted right group
  • 10. Quicksort Code P: first element r: last element Quicksort(A, p, r) { if (p < r) { q = Partition(A, p, r) Quicksort(A, p , q-1) Quicksort(A, q+1 , r) } } • Initial call is Quicksort(A, 1, n), where n in the length of A
  • 11. Partition • Clearly, all the action takes place in the partition() function – Rearranges the subarray in place – End result: • Two subarrays • All values in first subarray ≤ all values in second – Returns the index of the “pivot” element separating the two subarrays
  • 12. Partition Code Partition(A, p, r) { x = A[r] // x is pivot i = p - 1 for j = p to r – 1 { do if A[j] <= x then { i = i + 1 exchange A[i] ↔ A[j] } } exchange A[i+1] ↔ A[r] return i+1 } partition() runs in O(n) time
  • 13. Partition Example A = {2, 8, 7, 1, 3, 5, 6, 4{ 2 8 7 1 3 5 62 8 7 1 3 5 6 44 rp ji 2 8 7 1 3 5 62 8 7 1 3 5 6 44 rp i j rp i j 2 8 7 1 3 5 62 8 7 1 3 5 6 44 rp i j 8822 77 11 33 55 66 44 rp j 1122 77 88 33 55 66 44 i rp j 1122 33 88 77 55 66 44 i rp j 1122 33 88 77 55 66 44 i rp 1122 33 88 77 55 66 44 i rp 1122 33 44 77 55 66 88 i 22 22 22 22 22 22 22 11 11 33 33 11 33 11 33
  • 14. Partition Example Explanation • Red shaded elements are in the first partition with values ≤ x (pivot) • Gray shaded elements are in the second partition with values ≥ x (pivot) • The unshaded elements have no yet been put in one of the first two partitions • The final white element is the pivot
  • 15. Choice Of Pivot Three ways to choose the pivot: • Pivot is rightmost element in list that is to be sorted – When sorting A[6:20], use A[20] as the pivot – Textbook implementation does this • Randomly select one of the elements to be sorted as the pivot – When sorting A[6:20], generate a random number r in the range [6, 20] – Use A[r] as the pivot
  • 16. Choice Of Pivot • Median-of-Three rule - from the leftmost, middle, and rightmost elements of the list to be sorted, select the one with median key as the pivot – When sorting A[6:20], examine A[6], A[13] ((6+20)/2), and A[20] – Select the element with median (i.e., middle) key – If A[6].key = 30, A[13].key = 2, and A[20].key = 10, A[20] becomes the pivot – If A[6].key = 3, A[13].key = 2, and A[20].key = 10, A[6] becomes the pivot
  • 17. Worst Case Partitioning • The running time of quicksort depends on whether the partitioning is balanced or not. ∀ Θ(n) time to partition an array of n elements • Let T(n) be the time needed to sort n elements • T(0) = T(1) = c, where c is a constant • When n > 1, – T(n) = T(|left|) + T(|right|) + Θ(n) • T(n) is maximum (worst-case) when either |left| = 0 or |right| = 0 following each partitioning
  • 19. Worst Case Partitioning • Worst-Case Performance (unbalanced): – T(n) = T(1) + T(n-1) + Θ(n) • partitioning takes Θ(n) = [2 + 3 + 4 + …+ n-1 + n ]+ n = = [∑k = 2 to n k ]+ n = Θ(n2 ) • This occurs when – the input is completely sorted • or when – the pivot is always the smallest (largest) element )(2/)1(...21 2 1 nnnnk n k Θ=+=+++=∑=
  • 20. Best Case Partition • When the partitioning procedure produces two regions of size n/2, we get the a balanced partition with best case performance: – T(n) = 2T(n/2) + Θ(n) = Θ(n lg n) • Average complexity is also Θ(n lg n)
  • 22. Average Case • Assuming random input, average-case running time is much closer to Θ(n lg n) than Θ(n2 ) • First, a more intuitive explanation/example: – Suppose that partition() always produces a 9-to-1 proportional split. This looks quite unbalanced! – The recurrence is thus: T(n) = T(9n/10) + T(n/10) + Θ(n) = Θ(nlg n)? [Using recursion tree method to solve]
  • 23. Average Case ( ) ( /10) (9 /10) ( ) ( log )!T n T n T n n n n= + + Θ = Θ log2n = log10n/log102
  • 24. Average Case • Every level of the tree has cost cn, until a boundary condition is reached at depth log10 n = Θ( lgn), and then the levels have cost at most cn. • The recursion terminates at depth log10/9 n= Θ(lg n). • The total cost of quicksort is therefore O(n lg n).
  • 25. Average Case • 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 = Θ(n) n 1 n-1 (n-1)/2 (n-1)/2 ( )nΘ (n-1)/2 (n-1)/2 n ( )nΘ )1( −Θ n
  • 26. Intuition for the Average Case • Suppose, we alternate lucky and unlucky cases to get an average behavior ( ) 2 ( / 2) ( ) lucky ( ) ( 1) ( ) unlucky we consequently get ( ) 2( ( / 2 1) ( / 2)) ( ) 2 ( /2 1) ( ) ( log ) L n U n n U n L n n L n L n n n L n n n n = + Θ = − + Θ = − + Θ + Θ = − + Θ = Θ The combination of good and bad splits would result in T(n) = O (n lg n), but with slightly larger constant hidden by the O-notation.
  • 27. Randomized Quicksort • An algorithm is randomized if its behavior is determined not only by the input but also by values produced by a random-number generator. • Exchange A[r] with an element chosen at random from A[p…r] in Partition. • This ensures that the pivot element is equally likely to be any of input elements. • We can sometimes add randomization to an algorithm in order to obtain good average-case performance over all inputs.
  • 28. Randomized Quicksort Randomized-Partition(A, p, r) 1. i ← Random(p, r) 2. exchange A[r] ↔ A[i] 3. return Partition(A, p, r) Randomized-Quicksort(A, p, r) 1. if p < r 2. then q ← Randomized-Partition(A, p, r) 3. Randomized-Quicksort(A, p , q-1) 4. Randomized-Quicksort(A, q+1, r) pivot swap
  • 29. 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
  • 30. Summary: Quicksort • In worst-case, efficiency is Θ(n2 ) – But easy to avoid the worst-case • On average, efficiency is Θ(n lg n) • Better space-complexity than mergesort. • In practice, runs fast and widely used

Editor's Notes

  • #27: larger constant in the O notation