SlideShare a Scribd company logo
AD3251 - DATA STRUCTURES DESIGN
KGiSL Institute of Technology
2
Quick Sort
 Fastest known sorting algorithm in practice
 Average case: O(N log N)
 Worst case: O(N2)
But the worst case can be made exponentially unlikely.
 Another divide-and-conquer recursive algorithm, like merge sort.
3
Quick Sort: Main Idea
1. If the number of elements in S is 0 or 1, then return (base case).
2. Pick any element v in S (called the pivot).
3. Partition the elements in S except v into two disjoint groups:
1. S1 = {x S – {v} | x  v}
2. S2 = {x S – {v} | x  v}
4. Return {QuickSort(S1) + v + QuickSort(S2)}
4
Quick Sort: Example
5
Example of Quick Sort...
6
Issues To Consider
 How to pick the pivot?
Many methods (discussed later)
 How to partition?
Several methods exist.
The one we consider is known to give good results and to be easy and
efficient.
We discuss the partition strategy first.
7
Partitioning Strategy
 For now, assume that pivot = A[(left+right)/2].
 We want to partition array A[left .. right].
 First, get the pivot element out of the way by
swapping it with the last element (swap pivot and
A[right]).
 Let i start at the first element and j start at the next-to-
last element (i = left, j = right – 1)
pivot i j
5 7 4 6 3 12 19 5 7 4 6
3 12
19
swap
8
Partitioning Strategy
 Want to have
 A[k]  pivot, for k < i
 A[k]  pivot, for k > j
 When i < j
 Move i right, skipping over elements smaller than the pivot
 Move j left, skipping over elements greater than the pivot
 When both i and j have stopped
A[i]  pivot
A[j]  pivot  A[i] and A[j] should now be swapped
i j
5 7 4 6
3 12
19
i j
5 7 4 6
3 12
19
i j
 pivot  pivot
9
Partitioning Strategy (2)
 When i and j have stopped and i is to the left of j (thus
legal)
 Swap A[i] and A[j]
 The large element is pushed to the right and the small element
is pushed to the left
 After swapping
 A[i]  pivot
 A[j]  pivot
 Repeat the process until i and j cross
swap
i j
5 7 4 6
3 12
19
i j
5 3 4 6
7 12
19
10
Partitioning Strategy (3)
 When i and j have crossed
swap A[i] and pivot
 Result:
A[k]  pivot, for k < i
A[k]  pivot, for k > i
i j
5 3 4 6
7 12
19
i
j
5 3 4 6
7 12
19
i
j
5 3 4 6 7 12 19
swap A[i] and pivot
Break!
Picking the Pivot
There are several ways to pick a pivot.
Objective: Choose a pivot so that we will get 2 partitions
of (almost) equal size.
12
Picking the Pivot (2)
 Use the first element as pivot
if the input is random, ok.
if the input is presorted (or in reverse order)
all the elements go into S2 (or S1).
this happens consistently throughout the recursive
calls.
results in O(N2) behavior (we analyze this case later).
 Choose the pivot randomly
generally safe,
but random number generation can be expensive and
does not reduce the running time of the algorithm.
13
Picking the Pivot (3)
 Use the median of the array (ideal pivot)
The N/2 th largest element
Partitioning always cuts the array into roughly half
An optimal quick sort (O(N log N))
However, hard to find the exact median
 Median-of-three partitioning
eliminates the bad case for sorted input.
reduces the number of comparisons by 14%.
14
Median of Three Method
 Compare just three elements: the leftmost, rightmost and center
 Swap these elements if necessary so that
 A[left] = Smallest
 A[right] = Largest
 A[center] = Median of three
 Pick A[center] as the pivot.
 Swap A[center] and A[right – 1] so that the pivot is at the second last
position (why?)
15
Median of Three: Example
pivot
5 6 4
6
3 12 19
2 13 6
5 6 4 3 12 19
2 6 13
A[left] = 2, A[center] = 13,
A[right] = 6
Swap A[center] and A[right]
5 6 4 3 12 19
2 13
pivot
6
5 6 4 3 12
19
2 13
Choose A[center] as pivot
Swap pivot and A[right – 1]
We only need to partition A[ left + 1, …, right – 2 ]. Why?
Quick Sort Summary
 Recursive case: QuickSort( a, left, right )
pivot = median3( a, left, right );
Partition a[left … right] into a[left … i-1], i, a[i+1 … right];
QuickSort( a, left, i-1 );
QuickSort( a, i+1, right );
 Base case: when do we stop the recursion?
In theory, when left >= right.
In practice, …
17
Small Arrays
 For very small arrays, quick sort does not
perform as well as insertion sort
 Do not use quick sort recursively for small arrays
Use a sorting algorithm that is efficient for small
arrays, such as insertion sort.
 When using quick sort recursively, switch to
insertion sort when the sub-arrays have between
5 to 20 elements (10 is usually good).
saves about 15% in the running time.
avoids taking the median of three when the sub-array
has only 1 or 2 elements.
18
Quick Sort: Pseudo-code
For small arrays
Recursion
Choose pivot
Partitioning
19
Partitioning Part
 The partitioning code we just
saw works only if pivot is picked
as median-of-three.
 A[left]  pivot and A[right]  pivot
 Need to partition only
A[left + 1, …, right – 2]
 j will not run past the beginning
 because A[left]  pivot
 i will not run past the end
 because A[right-1] = pivot
Homework
 Assume the pivot is chosen as the middle element of an array:
pivot = a[(left+right)/2].
 Rewrite the partitioning code and the whole quick sort algorithm.
21
Quick Sort Faster Than Merge Sort
 Both quick sort and merge sort take O(N log N) in the
average case.
 But quick sort is faster in the average case:
The inner loop consists of an increment/decrement (by
1, which is fast), a test and a jump.
There is no extra juggling as in merge sort.
inner loop
22
Analysis
Assumptions:
 A random pivot (no median-of-three partitioning)
 No cutoff for small arrays ( to make it simple)
1. If the number of elements in S is 0 or 1, then return (base case).
2. Pick an element v in S (called the pivot).
3. Partition the elements in S except v into two disjoint groups:
1. S1 = {x S – {v} | x  v}
2. S2 = {x S – {v} | x  v}
4. Return {QuickSort(S1) + v + QuickSort(S2)}
23
Analysis (2)
 Running time
pivot selection: constant time, i.e. O(1)
partitioning: linear time, i.e. O(N)
running time of the two recursive calls
 T(N)= T(i) + T(N – i – 1) + cN
i: number of elements in S1
c is a constant
24
Worst-Case Scenario
 What will be the worst case?
The pivot is the smallest element, all the time
Partition is always unbalanced
25
Best-Case Scenario
 What will be the best case?
Partition is perfectly balanced.
Pivot is always in the middle (median of the array).
 T(N) = T(N/2) + T(N/2) + cN = 2T(N/2) + cN
 This recurrence is similar to the merge sort recurrence.
 The result is O(NlogN).
26
Average-Case Analysis
 Assume that each of the sizes for S1 is equally likely  has
probability 1/N.
 This assumption is valid for the pivoting and partitioning strategy
just discussed (but may not be for some others),
 On average, the running time is O(N log N).
 Proof: pp 272–273, Data Structures and Algorithm Analysis by M.
A. Weiss, 2nd edition

More Related Content

Similar to Quick sort.pptx

Introduction to Algorithms
Introduction to AlgorithmsIntroduction to Algorithms
Introduction to Algorithms
pppepito86
 
3.8 quick sort
3.8 quick sort3.8 quick sort
3.8 quick sort
Krish_ver2
 
Data Structure Sorting
Data Structure SortingData Structure Sorting
Data Structure Sorting
Muhazzab Chouhadry
 
CSE680-07QuickSort.pptx
CSE680-07QuickSort.pptxCSE680-07QuickSort.pptx
CSE680-07QuickSort.pptx
DeepakM509554
 
10 algos de tri
10   algos de tri10   algos de tri
10 algos de trikosss420
 
Quick sort Algorithm Discussion And Analysis
Quick sort Algorithm Discussion And AnalysisQuick sort Algorithm Discussion And Analysis
Quick sort Algorithm Discussion And Analysis
SNJ Chaudhary
 
Dsa – data structure and algorithms sorting
Dsa – data structure and algorithms  sortingDsa – data structure and algorithms  sorting
Dsa – data structure and algorithms sorting
sajinis3
 
Skiena algorithm 2007 lecture08 quicksort
Skiena algorithm 2007 lecture08 quicksortSkiena algorithm 2007 lecture08 quicksort
Skiena algorithm 2007 lecture08 quicksortzukun
 
Sorting
SortingSorting
quick_sort
quick_sortquick_sort
quick_sort
Mohamed Elsayed
 
07 Analysis of Algorithms: Order Statistics
07 Analysis of Algorithms: Order Statistics07 Analysis of Algorithms: Order Statistics
07 Analysis of Algorithms: Order Statistics
Andres Mendez-Vazquez
 
Insert Sort & Merge Sort Using C Programming
Insert Sort & Merge Sort Using C ProgrammingInsert Sort & Merge Sort Using C Programming
Insert Sort & Merge Sort Using C Programming
chandankumar364348
 
5.4 randomized datastructures
5.4 randomized datastructures5.4 randomized datastructures
5.4 randomized datastructures
Krish_ver2
 
5.4 randomized datastructures
5.4 randomized datastructures5.4 randomized datastructures
5.4 randomized datastructures
Krish_ver2
 
DAA-Divide and Conquer methodology, DAA 2024
DAA-Divide and Conquer methodology, DAA 2024DAA-Divide and Conquer methodology, DAA 2024
DAA-Divide and Conquer methodology, DAA 2024
RUHULAMINHAZARIKA
 
search_sort Search sortSearch sortSearch sortSearch sort
search_sort Search sortSearch sortSearch sortSearch sortsearch_sort Search sortSearch sortSearch sortSearch sort
search_sort Search sortSearch sortSearch sortSearch sort
Shanmuganathan C
 
Counting sort(Non Comparison Sort)
Counting sort(Non Comparison Sort)Counting sort(Non Comparison Sort)
Counting sort(Non Comparison Sort)
Hossain Md Shakhawat
 
sorting.pptx
sorting.pptxsorting.pptx
sorting.pptx
DrRanjeetKumar51721
 
14-sorting.ppt
14-sorting.ppt14-sorting.ppt
14-sorting.ppt
RenalthaPujaBagaskar
 

Similar to Quick sort.pptx (20)

Introduction to Algorithms
Introduction to AlgorithmsIntroduction to Algorithms
Introduction to Algorithms
 
3.8 quick sort
3.8 quick sort3.8 quick sort
3.8 quick sort
 
Data Structure Sorting
Data Structure SortingData Structure Sorting
Data Structure Sorting
 
Lec35
Lec35Lec35
Lec35
 
CSE680-07QuickSort.pptx
CSE680-07QuickSort.pptxCSE680-07QuickSort.pptx
CSE680-07QuickSort.pptx
 
10 algos de tri
10   algos de tri10   algos de tri
10 algos de tri
 
Quick sort Algorithm Discussion And Analysis
Quick sort Algorithm Discussion And AnalysisQuick sort Algorithm Discussion And Analysis
Quick sort Algorithm Discussion And Analysis
 
Dsa – data structure and algorithms sorting
Dsa – data structure and algorithms  sortingDsa – data structure and algorithms  sorting
Dsa – data structure and algorithms sorting
 
Skiena algorithm 2007 lecture08 quicksort
Skiena algorithm 2007 lecture08 quicksortSkiena algorithm 2007 lecture08 quicksort
Skiena algorithm 2007 lecture08 quicksort
 
Sorting
SortingSorting
Sorting
 
quick_sort
quick_sortquick_sort
quick_sort
 
07 Analysis of Algorithms: Order Statistics
07 Analysis of Algorithms: Order Statistics07 Analysis of Algorithms: Order Statistics
07 Analysis of Algorithms: Order Statistics
 
Insert Sort & Merge Sort Using C Programming
Insert Sort & Merge Sort Using C ProgrammingInsert Sort & Merge Sort Using C Programming
Insert Sort & Merge Sort Using C Programming
 
5.4 randomized datastructures
5.4 randomized datastructures5.4 randomized datastructures
5.4 randomized datastructures
 
5.4 randomized datastructures
5.4 randomized datastructures5.4 randomized datastructures
5.4 randomized datastructures
 
DAA-Divide and Conquer methodology, DAA 2024
DAA-Divide and Conquer methodology, DAA 2024DAA-Divide and Conquer methodology, DAA 2024
DAA-Divide and Conquer methodology, DAA 2024
 
search_sort Search sortSearch sortSearch sortSearch sort
search_sort Search sortSearch sortSearch sortSearch sortsearch_sort Search sortSearch sortSearch sortSearch sort
search_sort Search sortSearch sortSearch sortSearch sort
 
Counting sort(Non Comparison Sort)
Counting sort(Non Comparison Sort)Counting sort(Non Comparison Sort)
Counting sort(Non Comparison Sort)
 
sorting.pptx
sorting.pptxsorting.pptx
sorting.pptx
 
14-sorting.ppt
14-sorting.ppt14-sorting.ppt
14-sorting.ppt
 

Recently uploaded

Design Thinking Design thinking Design thinking
Design Thinking Design thinking Design thinkingDesign Thinking Design thinking Design thinking
Design Thinking Design thinking Design thinking
cy0krjxt
 
ARENA - Young adults in the workplace (Knight Moves).pdf
ARENA - Young adults in the workplace (Knight Moves).pdfARENA - Young adults in the workplace (Knight Moves).pdf
ARENA - Young adults in the workplace (Knight Moves).pdf
Knight Moves
 
原版定做(penn毕业证书)美国宾夕法尼亚大学毕业证文凭学历证书原版一模一样
原版定做(penn毕业证书)美国宾夕法尼亚大学毕业证文凭学历证书原版一模一样原版定做(penn毕业证书)美国宾夕法尼亚大学毕业证文凭学历证书原版一模一样
原版定做(penn毕业证书)美国宾夕法尼亚大学毕业证文凭学历证书原版一模一样
gpffo76j
 
Storytelling For The Web: Integrate Storytelling in your Design Process
Storytelling For The Web: Integrate Storytelling in your Design ProcessStorytelling For The Web: Integrate Storytelling in your Design Process
Storytelling For The Web: Integrate Storytelling in your Design Process
Chiara Aliotta
 
一比一原版(Glasgow毕业证书)格拉斯哥大学毕业证成绩单如何办理
一比一原版(Glasgow毕业证书)格拉斯哥大学毕业证成绩单如何办理一比一原版(Glasgow毕业证书)格拉斯哥大学毕业证成绩单如何办理
一比一原版(Glasgow毕业证书)格拉斯哥大学毕业证成绩单如何办理
n0tivyq
 
一比一原版(Bolton毕业证书)博尔顿大学毕业证成绩单如何办理
一比一原版(Bolton毕业证书)博尔顿大学毕业证成绩单如何办理一比一原版(Bolton毕业证书)博尔顿大学毕业证成绩单如何办理
一比一原版(Bolton毕业证书)博尔顿大学毕业证成绩单如何办理
h7j5io0
 
Portfolio.pdf
Portfolio.pdfPortfolio.pdf
Portfolio.pdf
garcese
 
一比一原版(LSE毕业证书)伦敦政治经济学院毕业证成绩单如何办理
一比一原版(LSE毕业证书)伦敦政治经济学院毕业证成绩单如何办理一比一原版(LSE毕业证书)伦敦政治经济学院毕业证成绩单如何办理
一比一原版(LSE毕业证书)伦敦政治经济学院毕业证成绩单如何办理
jyz59f4j
 
White wonder, Work developed by Eva Tschopp
White wonder, Work developed by Eva TschoppWhite wonder, Work developed by Eva Tschopp
White wonder, Work developed by Eva Tschopp
Mansi Shah
 
一比一原版(NCL毕业证书)纽卡斯尔大学毕业证成绩单如何办理
一比一原版(NCL毕业证书)纽卡斯尔大学毕业证成绩单如何办理一比一原版(NCL毕业证书)纽卡斯尔大学毕业证成绩单如何办理
一比一原版(NCL毕业证书)纽卡斯尔大学毕业证成绩单如何办理
7sd8fier
 
UNIT V ACTIONS AND COMMANDS, FORMS AND CONTROLS.pptx
UNIT V ACTIONS AND COMMANDS, FORMS AND CONTROLS.pptxUNIT V ACTIONS AND COMMANDS, FORMS AND CONTROLS.pptx
UNIT V ACTIONS AND COMMANDS, FORMS AND CONTROLS.pptx
GOWSIKRAJA PALANISAMY
 
Between Filth and Fortune- Urban Cattle Foraging Realities by Devi S Nair, An...
Between Filth and Fortune- Urban Cattle Foraging Realities by Devi S Nair, An...Between Filth and Fortune- Urban Cattle Foraging Realities by Devi S Nair, An...
Between Filth and Fortune- Urban Cattle Foraging Realities by Devi S Nair, An...
Mansi Shah
 
Maximize Your Content with Beautiful Assets : Content & Asset for Landing Page
Maximize Your Content with Beautiful Assets : Content & Asset for Landing Page Maximize Your Content with Beautiful Assets : Content & Asset for Landing Page
Maximize Your Content with Beautiful Assets : Content & Asset for Landing Page
pmgdscunsri
 
Mohannad Abdullah portfolio _ V2 _22-24
Mohannad Abdullah  portfolio _ V2 _22-24Mohannad Abdullah  portfolio _ V2 _22-24
Mohannad Abdullah portfolio _ V2 _22-24
M. A. Architect
 
ZAPATILLAS 2 X 110 ABRIL.pdf compra economico
ZAPATILLAS 2 X 110 ABRIL.pdf compra economicoZAPATILLAS 2 X 110 ABRIL.pdf compra economico
ZAPATILLAS 2 X 110 ABRIL.pdf compra economico
jhonguerrerobarturen
 
一比一原版(BU毕业证书)伯恩茅斯大学毕业证成绩单如何办理
一比一原版(BU毕业证书)伯恩茅斯大学毕业证成绩单如何办理一比一原版(BU毕业证书)伯恩茅斯大学毕业证成绩单如何办理
一比一原版(BU毕业证书)伯恩茅斯大学毕业证成绩单如何办理
h7j5io0
 
Moldes de letra 3D Alfabeto completo esp
Moldes de letra 3D Alfabeto completo espMoldes de letra 3D Alfabeto completo esp
Moldes de letra 3D Alfabeto completo esp
Hess9
 
Can AI do good? at 'offtheCanvas' India HCI prelude
Can AI do good? at 'offtheCanvas' India HCI preludeCan AI do good? at 'offtheCanvas' India HCI prelude
Can AI do good? at 'offtheCanvas' India HCI prelude
Alan Dix
 
一比一原版(UAL毕业证书)伦敦艺术大学毕业证成绩单如何办理
一比一原版(UAL毕业证书)伦敦艺术大学毕业证成绩单如何办理一比一原版(UAL毕业证书)伦敦艺术大学毕业证成绩单如何办理
一比一原版(UAL毕业证书)伦敦艺术大学毕业证成绩单如何办理
708pb191
 
Graphic Design Tools and Software .pptx
Graphic Design Tools and Software   .pptxGraphic Design Tools and Software   .pptx
Graphic Design Tools and Software .pptx
Virtual Real Design
 

Recently uploaded (20)

Design Thinking Design thinking Design thinking
Design Thinking Design thinking Design thinkingDesign Thinking Design thinking Design thinking
Design Thinking Design thinking Design thinking
 
ARENA - Young adults in the workplace (Knight Moves).pdf
ARENA - Young adults in the workplace (Knight Moves).pdfARENA - Young adults in the workplace (Knight Moves).pdf
ARENA - Young adults in the workplace (Knight Moves).pdf
 
原版定做(penn毕业证书)美国宾夕法尼亚大学毕业证文凭学历证书原版一模一样
原版定做(penn毕业证书)美国宾夕法尼亚大学毕业证文凭学历证书原版一模一样原版定做(penn毕业证书)美国宾夕法尼亚大学毕业证文凭学历证书原版一模一样
原版定做(penn毕业证书)美国宾夕法尼亚大学毕业证文凭学历证书原版一模一样
 
Storytelling For The Web: Integrate Storytelling in your Design Process
Storytelling For The Web: Integrate Storytelling in your Design ProcessStorytelling For The Web: Integrate Storytelling in your Design Process
Storytelling For The Web: Integrate Storytelling in your Design Process
 
一比一原版(Glasgow毕业证书)格拉斯哥大学毕业证成绩单如何办理
一比一原版(Glasgow毕业证书)格拉斯哥大学毕业证成绩单如何办理一比一原版(Glasgow毕业证书)格拉斯哥大学毕业证成绩单如何办理
一比一原版(Glasgow毕业证书)格拉斯哥大学毕业证成绩单如何办理
 
一比一原版(Bolton毕业证书)博尔顿大学毕业证成绩单如何办理
一比一原版(Bolton毕业证书)博尔顿大学毕业证成绩单如何办理一比一原版(Bolton毕业证书)博尔顿大学毕业证成绩单如何办理
一比一原版(Bolton毕业证书)博尔顿大学毕业证成绩单如何办理
 
Portfolio.pdf
Portfolio.pdfPortfolio.pdf
Portfolio.pdf
 
一比一原版(LSE毕业证书)伦敦政治经济学院毕业证成绩单如何办理
一比一原版(LSE毕业证书)伦敦政治经济学院毕业证成绩单如何办理一比一原版(LSE毕业证书)伦敦政治经济学院毕业证成绩单如何办理
一比一原版(LSE毕业证书)伦敦政治经济学院毕业证成绩单如何办理
 
White wonder, Work developed by Eva Tschopp
White wonder, Work developed by Eva TschoppWhite wonder, Work developed by Eva Tschopp
White wonder, Work developed by Eva Tschopp
 
一比一原版(NCL毕业证书)纽卡斯尔大学毕业证成绩单如何办理
一比一原版(NCL毕业证书)纽卡斯尔大学毕业证成绩单如何办理一比一原版(NCL毕业证书)纽卡斯尔大学毕业证成绩单如何办理
一比一原版(NCL毕业证书)纽卡斯尔大学毕业证成绩单如何办理
 
UNIT V ACTIONS AND COMMANDS, FORMS AND CONTROLS.pptx
UNIT V ACTIONS AND COMMANDS, FORMS AND CONTROLS.pptxUNIT V ACTIONS AND COMMANDS, FORMS AND CONTROLS.pptx
UNIT V ACTIONS AND COMMANDS, FORMS AND CONTROLS.pptx
 
Between Filth and Fortune- Urban Cattle Foraging Realities by Devi S Nair, An...
Between Filth and Fortune- Urban Cattle Foraging Realities by Devi S Nair, An...Between Filth and Fortune- Urban Cattle Foraging Realities by Devi S Nair, An...
Between Filth and Fortune- Urban Cattle Foraging Realities by Devi S Nair, An...
 
Maximize Your Content with Beautiful Assets : Content & Asset for Landing Page
Maximize Your Content with Beautiful Assets : Content & Asset for Landing Page Maximize Your Content with Beautiful Assets : Content & Asset for Landing Page
Maximize Your Content with Beautiful Assets : Content & Asset for Landing Page
 
Mohannad Abdullah portfolio _ V2 _22-24
Mohannad Abdullah  portfolio _ V2 _22-24Mohannad Abdullah  portfolio _ V2 _22-24
Mohannad Abdullah portfolio _ V2 _22-24
 
ZAPATILLAS 2 X 110 ABRIL.pdf compra economico
ZAPATILLAS 2 X 110 ABRIL.pdf compra economicoZAPATILLAS 2 X 110 ABRIL.pdf compra economico
ZAPATILLAS 2 X 110 ABRIL.pdf compra economico
 
一比一原版(BU毕业证书)伯恩茅斯大学毕业证成绩单如何办理
一比一原版(BU毕业证书)伯恩茅斯大学毕业证成绩单如何办理一比一原版(BU毕业证书)伯恩茅斯大学毕业证成绩单如何办理
一比一原版(BU毕业证书)伯恩茅斯大学毕业证成绩单如何办理
 
Moldes de letra 3D Alfabeto completo esp
Moldes de letra 3D Alfabeto completo espMoldes de letra 3D Alfabeto completo esp
Moldes de letra 3D Alfabeto completo esp
 
Can AI do good? at 'offtheCanvas' India HCI prelude
Can AI do good? at 'offtheCanvas' India HCI preludeCan AI do good? at 'offtheCanvas' India HCI prelude
Can AI do good? at 'offtheCanvas' India HCI prelude
 
一比一原版(UAL毕业证书)伦敦艺术大学毕业证成绩单如何办理
一比一原版(UAL毕业证书)伦敦艺术大学毕业证成绩单如何办理一比一原版(UAL毕业证书)伦敦艺术大学毕业证成绩单如何办理
一比一原版(UAL毕业证书)伦敦艺术大学毕业证成绩单如何办理
 
Graphic Design Tools and Software .pptx
Graphic Design Tools and Software   .pptxGraphic Design Tools and Software   .pptx
Graphic Design Tools and Software .pptx
 

Quick sort.pptx

  • 1. AD3251 - DATA STRUCTURES DESIGN KGiSL Institute of Technology
  • 2. 2 Quick Sort  Fastest known sorting algorithm in practice  Average case: O(N log N)  Worst case: O(N2) But the worst case can be made exponentially unlikely.  Another divide-and-conquer recursive algorithm, like merge sort.
  • 3. 3 Quick Sort: Main Idea 1. If the number of elements in S is 0 or 1, then return (base case). 2. Pick any element v in S (called the pivot). 3. Partition the elements in S except v into two disjoint groups: 1. S1 = {x S – {v} | x  v} 2. S2 = {x S – {v} | x  v} 4. Return {QuickSort(S1) + v + QuickSort(S2)}
  • 6. 6 Issues To Consider  How to pick the pivot? Many methods (discussed later)  How to partition? Several methods exist. The one we consider is known to give good results and to be easy and efficient. We discuss the partition strategy first.
  • 7. 7 Partitioning Strategy  For now, assume that pivot = A[(left+right)/2].  We want to partition array A[left .. right].  First, get the pivot element out of the way by swapping it with the last element (swap pivot and A[right]).  Let i start at the first element and j start at the next-to- last element (i = left, j = right – 1) pivot i j 5 7 4 6 3 12 19 5 7 4 6 3 12 19 swap
  • 8. 8 Partitioning Strategy  Want to have  A[k]  pivot, for k < i  A[k]  pivot, for k > j  When i < j  Move i right, skipping over elements smaller than the pivot  Move j left, skipping over elements greater than the pivot  When both i and j have stopped A[i]  pivot A[j]  pivot  A[i] and A[j] should now be swapped i j 5 7 4 6 3 12 19 i j 5 7 4 6 3 12 19 i j  pivot  pivot
  • 9. 9 Partitioning Strategy (2)  When i and j have stopped and i is to the left of j (thus legal)  Swap A[i] and A[j]  The large element is pushed to the right and the small element is pushed to the left  After swapping  A[i]  pivot  A[j]  pivot  Repeat the process until i and j cross swap i j 5 7 4 6 3 12 19 i j 5 3 4 6 7 12 19
  • 10. 10 Partitioning Strategy (3)  When i and j have crossed swap A[i] and pivot  Result: A[k]  pivot, for k < i A[k]  pivot, for k > i i j 5 3 4 6 7 12 19 i j 5 3 4 6 7 12 19 i j 5 3 4 6 7 12 19 swap A[i] and pivot Break!
  • 11. Picking the Pivot There are several ways to pick a pivot. Objective: Choose a pivot so that we will get 2 partitions of (almost) equal size.
  • 12. 12 Picking the Pivot (2)  Use the first element as pivot if the input is random, ok. if the input is presorted (or in reverse order) all the elements go into S2 (or S1). this happens consistently throughout the recursive calls. results in O(N2) behavior (we analyze this case later).  Choose the pivot randomly generally safe, but random number generation can be expensive and does not reduce the running time of the algorithm.
  • 13. 13 Picking the Pivot (3)  Use the median of the array (ideal pivot) The N/2 th largest element Partitioning always cuts the array into roughly half An optimal quick sort (O(N log N)) However, hard to find the exact median  Median-of-three partitioning eliminates the bad case for sorted input. reduces the number of comparisons by 14%.
  • 14. 14 Median of Three Method  Compare just three elements: the leftmost, rightmost and center  Swap these elements if necessary so that  A[left] = Smallest  A[right] = Largest  A[center] = Median of three  Pick A[center] as the pivot.  Swap A[center] and A[right – 1] so that the pivot is at the second last position (why?)
  • 15. 15 Median of Three: Example pivot 5 6 4 6 3 12 19 2 13 6 5 6 4 3 12 19 2 6 13 A[left] = 2, A[center] = 13, A[right] = 6 Swap A[center] and A[right] 5 6 4 3 12 19 2 13 pivot 6 5 6 4 3 12 19 2 13 Choose A[center] as pivot Swap pivot and A[right – 1] We only need to partition A[ left + 1, …, right – 2 ]. Why?
  • 16. Quick Sort Summary  Recursive case: QuickSort( a, left, right ) pivot = median3( a, left, right ); Partition a[left … right] into a[left … i-1], i, a[i+1 … right]; QuickSort( a, left, i-1 ); QuickSort( a, i+1, right );  Base case: when do we stop the recursion? In theory, when left >= right. In practice, …
  • 17. 17 Small Arrays  For very small arrays, quick sort does not perform as well as insertion sort  Do not use quick sort recursively for small arrays Use a sorting algorithm that is efficient for small arrays, such as insertion sort.  When using quick sort recursively, switch to insertion sort when the sub-arrays have between 5 to 20 elements (10 is usually good). saves about 15% in the running time. avoids taking the median of three when the sub-array has only 1 or 2 elements.
  • 18. 18 Quick Sort: Pseudo-code For small arrays Recursion Choose pivot Partitioning
  • 19. 19 Partitioning Part  The partitioning code we just saw works only if pivot is picked as median-of-three.  A[left]  pivot and A[right]  pivot  Need to partition only A[left + 1, …, right – 2]  j will not run past the beginning  because A[left]  pivot  i will not run past the end  because A[right-1] = pivot
  • 20. Homework  Assume the pivot is chosen as the middle element of an array: pivot = a[(left+right)/2].  Rewrite the partitioning code and the whole quick sort algorithm.
  • 21. 21 Quick Sort Faster Than Merge Sort  Both quick sort and merge sort take O(N log N) in the average case.  But quick sort is faster in the average case: The inner loop consists of an increment/decrement (by 1, which is fast), a test and a jump. There is no extra juggling as in merge sort. inner loop
  • 22. 22 Analysis Assumptions:  A random pivot (no median-of-three partitioning)  No cutoff for small arrays ( to make it simple) 1. If the number of elements in S is 0 or 1, then return (base case). 2. Pick an element v in S (called the pivot). 3. Partition the elements in S except v into two disjoint groups: 1. S1 = {x S – {v} | x  v} 2. S2 = {x S – {v} | x  v} 4. Return {QuickSort(S1) + v + QuickSort(S2)}
  • 23. 23 Analysis (2)  Running time pivot selection: constant time, i.e. O(1) partitioning: linear time, i.e. O(N) running time of the two recursive calls  T(N)= T(i) + T(N – i – 1) + cN i: number of elements in S1 c is a constant
  • 24. 24 Worst-Case Scenario  What will be the worst case? The pivot is the smallest element, all the time Partition is always unbalanced
  • 25. 25 Best-Case Scenario  What will be the best case? Partition is perfectly balanced. Pivot is always in the middle (median of the array).  T(N) = T(N/2) + T(N/2) + cN = 2T(N/2) + cN  This recurrence is similar to the merge sort recurrence.  The result is O(NlogN).
  • 26. 26 Average-Case Analysis  Assume that each of the sizes for S1 is equally likely  has probability 1/N.  This assumption is valid for the pivoting and partitioning strategy just discussed (but may not be for some others),  On average, the running time is O(N log N).  Proof: pp 272–273, Data Structures and Algorithm Analysis by M. A. Weiss, 2nd edition