SlideShare a Scribd company logo
CS 332: Algorithms Linear-Time Sorting Continued Medians and Order Statistics
Review: Comparison Sorts Comparison sorts: O(n lg n) at best Model sort with decision tree Path down tree = execution trace of algorithm Leaves of tree = possible permutations of input Tree must have n! leaves, so O(n lg n) height
Review: Counting Sort  Counting sort:  Assumption: input is in the range 1..k Basic idea:  Count number of elements  k     each element  i Use that number to place  i  in position  k  of sorted array  No comparisons! Runs in time O(n + k) Stable sort Does not sort in place: O(n) array to hold sorted output O(k) array for scratch storage
Review: Counting Sort 1 CountingSort(A, B, k) 2 for i=1 to k 3 C[i]= 0; 4 for j=1 to n 5 C[A[j]] += 1; 6 for i=2 to k 7 C[i] = C[i] + C[i-1]; 8 for j=n downto 1 9 B[C[A[j]]] = A[j]; 10 C[A[j]] -= 1;
Review: Radix Sort How did IBM get rich originally? Answer: punched card readers for census tabulation in early 1900’s.  In particular, a  card sorter  that could sort cards into different bins Each column can be punched in 12 places Decimal digits use 10 places Problem: only one column can be sorted on at a time
Review: Radix Sort Intuitively, you might sort on the most significant digit, then the second msd, etc. Problem: lots of intermediate piles of cards (read: scratch arrays) to keep track of Key idea: sort the  least  significant digit first RadixSort(A, d) for i=1 to d StableSort(A) on digit i Example: Fig 9.3
Radix Sort Can we prove it will work? Sketch of an inductive argument (induction on the number of passes): Assume lower-order digits {j: j<i}are sorted Show that sorting next digit i leaves array correctly sorted  If two digits at position i are different, ordering numbers by that digit is correct (lower-order digits irrelevant) If they are the same, numbers are already sorted on the lower-order digits.  Since we use a stable sort, the numbers stay in the right order
Radix Sort What sort will we use to sort on digits? Counting sort is obvious choice:  Sort  n  numbers on digits that range from 1.. k Time: O( n  +  k ) Each pass over  n  numbers with  d  digits takes time O( n+k ), so total time O( dn+dk ) When  d  is constant and  k= O( n ), takes O( n ) time How many bits in a computer word?
Radix Sort Problem: sort 1 million 64-bit numbers Treat as four-digit radix 2 16  numbers Can sort in just four passes with radix sort! Compares well with typical O( n  lg  n ) comparison sort  Requires approx lg  n  = 20 operations per number being sorted So why would we ever use anything but radix sort?
Radix Sort In general, radix sort based on counting sort is Fast Asymptotically fast (i.e., O( n )) Simple to code A good choice To think about:  Can radix sort be used on floating-point numbers?
Summary: Radix Sort Radix sort: Assumption: input has  d  digits ranging from 0 to  k Basic idea:  Sort elements by digit starting with  least  significant Use a stable sort (like counting sort) for each stage Each pass over  n  numbers with  d  digits takes time O( n+k ), so total time O( dn+dk ) When  d  is constant and  k= O( n ), takes O( n ) time Fast!  Stable! Simple! Doesn’t sort in place
Bucket Sort Bucket sort Assumption: input is  n  reals from [0, 1) Basic idea:  Create  n  linked lists ( buckets ) to divide interval [0,1) into subintervals of size 1/ n Add each input element to appropriate bucket and sort buckets with insertion sort Uniform input distribution    O(1) bucket size Therefore the expected total time is O(n) These ideas will return when we study  hash tables
Order Statistics The  i th  order statistic  in a set of  n  elements is the  i th smallest element The  minimum   is thus the 1st order statistic  The  maximum  is (duh)   the  n th order statistic The  median  is the  n /2 order statistic If  n  is even, there are 2 medians How can we calculate order statistics? What is the running time?
Order Statistics How many comparisons are needed to find the minimum element in a set?  The maximum? Can we find the minimum and maximum with less than twice the cost? Yes: Walk through elements by pairs Compare each element in pair to the other Compare the largest to maximum, smallest to minimum Total cost: 3 comparisons per 2 elements = O(3n/2)
Finding Order Statistics:  The Selection Problem A more interesting problem is  selection : finding the  i th smallest element of a set  We will show: A practical randomized algorithm with O(n) expected running time A cool algorithm of theoretical interest only with O(n) worst-case running time
Randomized Selection Key idea: use partition() from quicksort But, only need to examine one subarray This savings shows up in running time: O(n) We will again use a slightly different partition than the book: q = RandomizedPartition(A, p, r)    A[q]    A[q] q p r
Randomized Selection RandomizedSelect(A, p, r, i) if (p == r) then return A[p]; q = RandomizedPartition(A, p, r) k = q - p + 1; if (i == k) then return A[q];  // not in book if (i < k) then return RandomizedSelect(A, p, q-1, i); else return RandomizedSelect(A, q+1, r, i-k);    A[q]    A[q] k q p r
Randomized Selection Analyzing  RandomizedSelect() Worst case: partition always 0:n-1 T(n)  = T(n-1) + O(n) = ??? = O(n 2 )  (arithmetic series) No better than sorting! “ Best” case: suppose a 9:1 partition T(n)  = T(9 n /10) + O(n)  = ??? = O(n) (Master Theorem, case 3) Better than sorting! What if this had been a 99:1 split?
Randomized Selection Average case For upper bound, assume  i th element always falls in larger side of partition: Let’s show that T( n ) = O( n ) by substitution What happened here?
Randomized Selection Assume T( n )     cn  for sufficiently large  c : What happened here? “ Split” the recurrence What happened here? What happened here? What happened here? The recurrence we started with Substitute T(n)    cn  for T(k)  Expand arithmetic series Multiply it out
Randomized Selection Assume T( n )     cn  for sufficiently large  c : What happened here? Subtract c/2 What happened here? What happened here? What happened here? The recurrence so far Multiply it out   Rearrange the arithmetic What we set out to prove
Worst-Case Linear-Time Selection Randomized algorithm works well in practice What follows is a worst-case linear time algorithm, really of theoretical interest only Basic idea:  Generate a good partitioning element Call this element  x
Worst-Case Linear-Time Selection The algorithm in words: 1. Divide  n  elements into groups of 5 2. Find median of each group ( How?  How long? ) 3. Use Select() recursively to find median  x  of the   n/5    medians 4. Partition the  n  elements around  x .  Let  k  = rank( x ) 5. if  (i == k)  then  return x if  (i < k)  then  use Select() recursively to find  i th smallest  element in first partition else  (i > k) use Select() recursively to find ( i-k )th smallest  element in last partition
Worst-Case Linear-Time Selection (Sketch situation on the board) How many of the 5-element medians are    x? At least 1/2 of the medians =   n/5   / 2   =   n/10  How many elements are    x? At least 3   n/10    elements For large  n ,  3   n/10       n/4  (How large?) So at least  n /4 elements     x Similarly: at least  n /4 elements     x
Worst-Case Linear-Time Selection Thus after partitioning around  x , step 5 will call Select() on at most 3 n /4 elements The recurrence is therefore:  ??? ??? ??? ??? ???  n/5       n/5 Substitute T(n) = cn Combine fractions  Express in desired form What we set out to prove
Worst-Case Linear-Time Selection Intuitively: Work at each level is a constant fraction (19/20) smaller Geometric progression! Thus the O(n) work at the root dominates
Linear-Time Median Selection Given a “black box” O(n) median algorithm, what can we do? i th order statistic:  Find median  x Partition input around  x if ( i    (n+1)/2)  recursively find  i th element of first half else find ( i  - (n+1)/2)th element in second half T(n) = T(n/2) + O(n) = O(n) Can you think of an application to sorting?
Linear-Time Median Selection Worst-case O(n lg n) quicksort Find median  x  and partition around it Recursively quicksort two halves T(n) = 2T(n/2) + O(n) = O(n lg n)
The End

More Related Content

What's hot (20)

3.8 quicksort
3.8 quicksort3.8 quicksort
3.8 quicksort
Krish_ver2
 
Linear sorting
Linear sortingLinear sorting
Linear sorting
Krishna Chaytaniah
 
Lec5
Lec5Lec5
Lec5
Nikhil Chilwant
 
Divide and conquer
Divide and conquerDivide and conquer
Divide and conquer
ramya marichamy
 
median and order statistics
median and order statisticsmedian and order statistics
median and order statistics
Shashank Singh
 
Quick sort algorithn
Quick sort algorithnQuick sort algorithn
Quick sort algorithn
Kumar
 
5.5 back tracking 02
5.5 back tracking 025.5 back tracking 02
5.5 back tracking 02
Krish_ver2
 
Lecture 5 6_7 - divide and conquer and method of solving recurrences
Lecture 5 6_7 - divide and conquer and method of solving recurrencesLecture 5 6_7 - divide and conquer and method of solving recurrences
Lecture 5 6_7 - divide and conquer and method of solving recurrences
jayavignesh86
 
Lec23
Lec23Lec23
Lec23
Anjneya Varshney
 
Algorithm big o
Algorithm big oAlgorithm big o
Algorithm big o
Ashim Lamichhane
 
5.4 randomized datastructures
5.4 randomized datastructures5.4 randomized datastructures
5.4 randomized datastructures
Krish_ver2
 
algorithm unit 1
algorithm unit 1algorithm unit 1
algorithm unit 1
Monika Choudhery
 
Divide and conquer
Divide and conquerDivide and conquer
Divide and conquer
Dr Shashikant Athawale
 
220exercises2
220exercises2220exercises2
220exercises2
sadhanakumble
 
Lecture 4 asymptotic notations
Lecture 4   asymptotic notationsLecture 4   asymptotic notations
Lecture 4 asymptotic notations
jayavignesh86
 
Greedy algorithm
Greedy algorithmGreedy algorithm
Greedy algorithm
International Islamic University
 
algorithm Unit 4
algorithm Unit 4 algorithm Unit 4
algorithm Unit 4
Monika Choudhery
 
Scalable k-means plus plus
Scalable k-means plus plusScalable k-means plus plus
Scalable k-means plus plus
Prabin Giri, PhD Student
 
Big oh Representation Used in Time complexities
Big oh Representation Used in Time complexitiesBig oh Representation Used in Time complexities
Big oh Representation Used in Time complexities
LAKSHMITHARUN PONNAM
 
Big o
Big oBig o
Big o
Thanhvinh Vo
 

Viewers also liked (8)

Algorithm
AlgorithmAlgorithm
Algorithm
Syam Kumar
 
Skiena algorithm 2007 lecture09 linear sorting
Skiena algorithm 2007 lecture09 linear sortingSkiena algorithm 2007 lecture09 linear sorting
Skiena algorithm 2007 lecture09 linear sorting
zukun
 
lecture 25
lecture 25lecture 25
lecture 25
sajinsc
 
lecture 11
lecture 11lecture 11
lecture 11
sajinsc
 
Next higher number with same number of binary bits set
Next higher number with same number of binary bits setNext higher number with same number of binary bits set
Next higher number with same number of binary bits set
GowriKumar Chandramouli
 
Sorting Algorithms
Sorting AlgorithmsSorting Algorithms
Sorting Algorithms
Shivam Singh
 
Sorting Algorithms
Sorting AlgorithmsSorting Algorithms
Sorting Algorithms
multimedia9
 
Sorting algorithms
Sorting algorithmsSorting algorithms
Sorting algorithms
Trupti Agrawal
 
Skiena algorithm 2007 lecture09 linear sorting
Skiena algorithm 2007 lecture09 linear sortingSkiena algorithm 2007 lecture09 linear sorting
Skiena algorithm 2007 lecture09 linear sorting
zukun
 
lecture 25
lecture 25lecture 25
lecture 25
sajinsc
 
lecture 11
lecture 11lecture 11
lecture 11
sajinsc
 
Next higher number with same number of binary bits set
Next higher number with same number of binary bits setNext higher number with same number of binary bits set
Next higher number with same number of binary bits set
GowriKumar Chandramouli
 
Sorting Algorithms
Sorting AlgorithmsSorting Algorithms
Sorting Algorithms
Shivam Singh
 
Sorting Algorithms
Sorting AlgorithmsSorting Algorithms
Sorting Algorithms
multimedia9
 

Similar to lecture 10 (20)

lecture 9
lecture 9lecture 9
lecture 9
sajinsc
 
Counting Sort Lowerbound
Counting Sort LowerboundCounting Sort Lowerbound
Counting Sort Lowerbound
despicable me
 
Cis435 week06
Cis435 week06Cis435 week06
Cis435 week06
ashish bansal
 
Sorting2
Sorting2Sorting2
Sorting2
Saurabh Mishra
 
Linear time sorting algorithms
Linear time sorting algorithmsLinear time sorting algorithms
Linear time sorting algorithms
Dr Sandeep Kumar Poonia
 
sorting
sortingsorting
sorting
Ravirajsinh Chauhan
 
Data structure using c module 3
Data structure using c module 3Data structure using c module 3
Data structure using c module 3
smruti sarangi
 
Sorting and Searching Techniques
Sorting and Searching TechniquesSorting and Searching Techniques
Sorting and Searching Techniques
Prof Ansari
 
Linear sort
Linear sortLinear sort
Linear sort
Amit Kumar Rathi
 
Study on Sorting Algorithm and Position Determining Sort
Study on Sorting Algorithm and Position Determining SortStudy on Sorting Algorithm and Position Determining Sort
Study on Sorting Algorithm and Position Determining Sort
IRJET Journal
 
Data Structure and algorithms for software
Data Structure and algorithms for softwareData Structure and algorithms for software
Data Structure and algorithms for software
ManishShukla712917
 
Unit-1 DAA_Notes.pdf
Unit-1 DAA_Notes.pdfUnit-1 DAA_Notes.pdf
Unit-1 DAA_Notes.pdf
AmayJaiswal4
 
03_sorting and it's types with example .ppt
03_sorting and it's types with example .ppt03_sorting and it's types with example .ppt
03_sorting and it's types with example .ppt
vanshii9976
 
03_sorting123456789454545454545444543.ppt
03_sorting123456789454545454545444543.ppt03_sorting123456789454545454545444543.ppt
03_sorting123456789454545454545444543.ppt
ssuser7b9bda1
 
Analysis and design of algorithms part2
Analysis and design of algorithms part2Analysis and design of algorithms part2
Analysis and design of algorithms part2
Deepak John
 
Linear Sorting
Linear SortingLinear Sorting
Linear Sorting
Bhavik Vashi
 
free power point ready to download right now
free power point ready to download right nowfree power point ready to download right now
free power point ready to download right now
waroc73256
 
MergesortQuickSort.ppt
MergesortQuickSort.pptMergesortQuickSort.ppt
MergesortQuickSort.ppt
AliAhmad38278
 
presentation_mergesortquicksort_1458716068_193111.ppt
presentation_mergesortquicksort_1458716068_193111.pptpresentation_mergesortquicksort_1458716068_193111.ppt
presentation_mergesortquicksort_1458716068_193111.ppt
ajiths82
 
Analysis of algorithms
Analysis of algorithms Analysis of algorithms
Analysis of algorithms
MUSAIDRIS15
 
lecture 9
lecture 9lecture 9
lecture 9
sajinsc
 
Counting Sort Lowerbound
Counting Sort LowerboundCounting Sort Lowerbound
Counting Sort Lowerbound
despicable me
 
Data structure using c module 3
Data structure using c module 3Data structure using c module 3
Data structure using c module 3
smruti sarangi
 
Sorting and Searching Techniques
Sorting and Searching TechniquesSorting and Searching Techniques
Sorting and Searching Techniques
Prof Ansari
 
Study on Sorting Algorithm and Position Determining Sort
Study on Sorting Algorithm and Position Determining SortStudy on Sorting Algorithm and Position Determining Sort
Study on Sorting Algorithm and Position Determining Sort
IRJET Journal
 
Data Structure and algorithms for software
Data Structure and algorithms for softwareData Structure and algorithms for software
Data Structure and algorithms for software
ManishShukla712917
 
Unit-1 DAA_Notes.pdf
Unit-1 DAA_Notes.pdfUnit-1 DAA_Notes.pdf
Unit-1 DAA_Notes.pdf
AmayJaiswal4
 
03_sorting and it's types with example .ppt
03_sorting and it's types with example .ppt03_sorting and it's types with example .ppt
03_sorting and it's types with example .ppt
vanshii9976
 
03_sorting123456789454545454545444543.ppt
03_sorting123456789454545454545444543.ppt03_sorting123456789454545454545444543.ppt
03_sorting123456789454545454545444543.ppt
ssuser7b9bda1
 
Analysis and design of algorithms part2
Analysis and design of algorithms part2Analysis and design of algorithms part2
Analysis and design of algorithms part2
Deepak John
 
free power point ready to download right now
free power point ready to download right nowfree power point ready to download right now
free power point ready to download right now
waroc73256
 
MergesortQuickSort.ppt
MergesortQuickSort.pptMergesortQuickSort.ppt
MergesortQuickSort.ppt
AliAhmad38278
 
presentation_mergesortquicksort_1458716068_193111.ppt
presentation_mergesortquicksort_1458716068_193111.pptpresentation_mergesortquicksort_1458716068_193111.ppt
presentation_mergesortquicksort_1458716068_193111.ppt
ajiths82
 
Analysis of algorithms
Analysis of algorithms Analysis of algorithms
Analysis of algorithms
MUSAIDRIS15
 

More from sajinsc (20)

lecture 30
lecture 30lecture 30
lecture 30
sajinsc
 
lecture 29
lecture 29lecture 29
lecture 29
sajinsc
 
lecture 28
lecture 28lecture 28
lecture 28
sajinsc
 
lecture 27
lecture 27lecture 27
lecture 27
sajinsc
 
lecture 26
lecture 26lecture 26
lecture 26
sajinsc
 
lecture 24
lecture 24lecture 24
lecture 24
sajinsc
 
lecture 23
lecture 23lecture 23
lecture 23
sajinsc
 
lecture 22
lecture 22lecture 22
lecture 22
sajinsc
 
lecture 21
lecture 21lecture 21
lecture 21
sajinsc
 
lecture 20
lecture 20lecture 20
lecture 20
sajinsc
 
lecture 19
lecture 19lecture 19
lecture 19
sajinsc
 
lecture 18
lecture 18lecture 18
lecture 18
sajinsc
 
lecture 17
lecture 17lecture 17
lecture 17
sajinsc
 
lecture 16
lecture 16lecture 16
lecture 16
sajinsc
 
lecture 15
lecture 15lecture 15
lecture 15
sajinsc
 
lecture 14
lecture 14lecture 14
lecture 14
sajinsc
 
lecture 13
lecture 13lecture 13
lecture 13
sajinsc
 
lecture 12
lecture 12lecture 12
lecture 12
sajinsc
 
lecture 8
lecture 8lecture 8
lecture 8
sajinsc
 
lecture 7
lecture 7lecture 7
lecture 7
sajinsc
 
lecture 30
lecture 30lecture 30
lecture 30
sajinsc
 
lecture 29
lecture 29lecture 29
lecture 29
sajinsc
 
lecture 28
lecture 28lecture 28
lecture 28
sajinsc
 
lecture 27
lecture 27lecture 27
lecture 27
sajinsc
 
lecture 26
lecture 26lecture 26
lecture 26
sajinsc
 
lecture 24
lecture 24lecture 24
lecture 24
sajinsc
 
lecture 23
lecture 23lecture 23
lecture 23
sajinsc
 
lecture 22
lecture 22lecture 22
lecture 22
sajinsc
 
lecture 21
lecture 21lecture 21
lecture 21
sajinsc
 
lecture 20
lecture 20lecture 20
lecture 20
sajinsc
 
lecture 19
lecture 19lecture 19
lecture 19
sajinsc
 
lecture 18
lecture 18lecture 18
lecture 18
sajinsc
 
lecture 17
lecture 17lecture 17
lecture 17
sajinsc
 
lecture 16
lecture 16lecture 16
lecture 16
sajinsc
 
lecture 15
lecture 15lecture 15
lecture 15
sajinsc
 
lecture 14
lecture 14lecture 14
lecture 14
sajinsc
 
lecture 13
lecture 13lecture 13
lecture 13
sajinsc
 
lecture 12
lecture 12lecture 12
lecture 12
sajinsc
 
lecture 8
lecture 8lecture 8
lecture 8
sajinsc
 
lecture 7
lecture 7lecture 7
lecture 7
sajinsc
 

Recently uploaded (20)

Electronics Engineering Assignment Help Guide – Expert Support for Students
Electronics Engineering Assignment Help Guide – Expert Support for StudentsElectronics Engineering Assignment Help Guide – Expert Support for Students
Electronics Engineering Assignment Help Guide – Expert Support for Students
online college homework help
 
YSPH VMOC Special Report - Measles Outbreak Southwest US 5-25-2025.pptx
YSPH VMOC Special Report - Measles Outbreak  Southwest US 5-25-2025.pptxYSPH VMOC Special Report - Measles Outbreak  Southwest US 5-25-2025.pptx
YSPH VMOC Special Report - Measles Outbreak Southwest US 5-25-2025.pptx
Yale School of Public Health - The Virtual Medical Operations Center (VMOC)
 
NA FASE REGIONAL DO TL – 1.º CICLO. .
NA FASE REGIONAL DO TL – 1.º CICLO.     .NA FASE REGIONAL DO TL – 1.º CICLO.     .
NA FASE REGIONAL DO TL – 1.º CICLO. .
Colégio Santa Teresinha
 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
siemaillard
 
he Grant Preparation Playbook: Building a System for Grant Success
he Grant Preparation Playbook: Building a System for Grant Successhe Grant Preparation Playbook: Building a System for Grant Success
he Grant Preparation Playbook: Building a System for Grant Success
TechSoup
 
5503 Course Proposal Online Computer Middle School Course Wood M.pdf
5503 Course Proposal Online Computer Middle School Course Wood M.pdf5503 Course Proposal Online Computer Middle School Course Wood M.pdf
5503 Course Proposal Online Computer Middle School Course Wood M.pdf
Melanie Wood
 
QUIZ-O-FORCE 3.0 FINAL SET BY SOURAV .pptx
QUIZ-O-FORCE 3.0 FINAL SET BY SOURAV .pptxQUIZ-O-FORCE 3.0 FINAL SET BY SOURAV .pptx
QUIZ-O-FORCE 3.0 FINAL SET BY SOURAV .pptx
Sourav Kr Podder
 
Samarth QUIZ 2024-25_ FINAL ROUND QUESTIONS
Samarth  QUIZ 2024-25_ FINAL ROUND QUESTIONSSamarth  QUIZ 2024-25_ FINAL ROUND QUESTIONS
Samarth QUIZ 2024-25_ FINAL ROUND QUESTIONS
Anand Kumar
 
Drug Metabolism advanced medicinal chemistry.pptx
Drug Metabolism advanced medicinal chemistry.pptxDrug Metabolism advanced medicinal chemistry.pptx
Drug Metabolism advanced medicinal chemistry.pptx
pharmaworld
 
the dynastic history of the Gahadwals of Early Medieval Period
the dynastic history of the Gahadwals of Early Medieval Periodthe dynastic history of the Gahadwals of Early Medieval Period
the dynastic history of the Gahadwals of Early Medieval Period
PrachiSontakke5
 
The Splitting of the Moon (Shaqq al-Qamar).pdf
The Splitting of the Moon (Shaqq al-Qamar).pdfThe Splitting of the Moon (Shaqq al-Qamar).pdf
The Splitting of the Moon (Shaqq al-Qamar).pdf
Mirza Gazanfar Ali Baig
 
How to create Record rules in odoo 18 - Odoo Slides
How to create Record rules in odoo 18 - Odoo  SlidesHow to create Record rules in odoo 18 - Odoo  Slides
How to create Record rules in odoo 18 - Odoo Slides
Celine George
 
Policies, procedures, subject selection and QTAC.pptx
Policies, procedures, subject selection and QTAC.pptxPolicies, procedures, subject selection and QTAC.pptx
Policies, procedures, subject selection and QTAC.pptx
mansk2
 
Unit 4 Reverse Engineering Tools Functionalities & Use-Cases.pdf
Unit 4  Reverse Engineering Tools  Functionalities & Use-Cases.pdfUnit 4  Reverse Engineering Tools  Functionalities & Use-Cases.pdf
Unit 4 Reverse Engineering Tools Functionalities & Use-Cases.pdf
ChatanBawankar
 
Protest - Student Revision Booklet For VCE English
Protest - Student Revision Booklet For VCE EnglishProtest - Student Revision Booklet For VCE English
Protest - Student Revision Booklet For VCE English
jpinnuck
 
How to Add a Custom Menu, List view and FIlters in the Customer Portal Odoo 18
How to Add a Custom Menu, List view and FIlters in the Customer Portal Odoo 18How to Add a Custom Menu, List view and FIlters in the Customer Portal Odoo 18
How to Add a Custom Menu, List view and FIlters in the Customer Portal Odoo 18
Celine George
 
Philosophical Basis of Curriculum Designing
Philosophical Basis of Curriculum DesigningPhilosophical Basis of Curriculum Designing
Philosophical Basis of Curriculum Designing
Ankit Choudhary
 
KNN,Weighted KNN,Nearest Centroid Classifier,Locally Weighted Regression
KNN,Weighted KNN,Nearest Centroid Classifier,Locally Weighted RegressionKNN,Weighted KNN,Nearest Centroid Classifier,Locally Weighted Regression
KNN,Weighted KNN,Nearest Centroid Classifier,Locally Weighted Regression
Global Academy of Technology
 
TechSoup Introduction to Generative AI and Copilot - 2025.05.22.pdf
TechSoup Introduction to Generative AI and Copilot - 2025.05.22.pdfTechSoup Introduction to Generative AI and Copilot - 2025.05.22.pdf
TechSoup Introduction to Generative AI and Copilot - 2025.05.22.pdf
TechSoup
 
Taxonomy and Systematics: Classification and Diversity of Insects.pptx
Taxonomy and Systematics: Classification and Diversity of Insects.pptxTaxonomy and Systematics: Classification and Diversity of Insects.pptx
Taxonomy and Systematics: Classification and Diversity of Insects.pptx
Arshad Shaikh
 
Electronics Engineering Assignment Help Guide – Expert Support for Students
Electronics Engineering Assignment Help Guide – Expert Support for StudentsElectronics Engineering Assignment Help Guide – Expert Support for Students
Electronics Engineering Assignment Help Guide – Expert Support for Students
online college homework help
 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
siemaillard
 
he Grant Preparation Playbook: Building a System for Grant Success
he Grant Preparation Playbook: Building a System for Grant Successhe Grant Preparation Playbook: Building a System for Grant Success
he Grant Preparation Playbook: Building a System for Grant Success
TechSoup
 
5503 Course Proposal Online Computer Middle School Course Wood M.pdf
5503 Course Proposal Online Computer Middle School Course Wood M.pdf5503 Course Proposal Online Computer Middle School Course Wood M.pdf
5503 Course Proposal Online Computer Middle School Course Wood M.pdf
Melanie Wood
 
QUIZ-O-FORCE 3.0 FINAL SET BY SOURAV .pptx
QUIZ-O-FORCE 3.0 FINAL SET BY SOURAV .pptxQUIZ-O-FORCE 3.0 FINAL SET BY SOURAV .pptx
QUIZ-O-FORCE 3.0 FINAL SET BY SOURAV .pptx
Sourav Kr Podder
 
Samarth QUIZ 2024-25_ FINAL ROUND QUESTIONS
Samarth  QUIZ 2024-25_ FINAL ROUND QUESTIONSSamarth  QUIZ 2024-25_ FINAL ROUND QUESTIONS
Samarth QUIZ 2024-25_ FINAL ROUND QUESTIONS
Anand Kumar
 
Drug Metabolism advanced medicinal chemistry.pptx
Drug Metabolism advanced medicinal chemistry.pptxDrug Metabolism advanced medicinal chemistry.pptx
Drug Metabolism advanced medicinal chemistry.pptx
pharmaworld
 
the dynastic history of the Gahadwals of Early Medieval Period
the dynastic history of the Gahadwals of Early Medieval Periodthe dynastic history of the Gahadwals of Early Medieval Period
the dynastic history of the Gahadwals of Early Medieval Period
PrachiSontakke5
 
The Splitting of the Moon (Shaqq al-Qamar).pdf
The Splitting of the Moon (Shaqq al-Qamar).pdfThe Splitting of the Moon (Shaqq al-Qamar).pdf
The Splitting of the Moon (Shaqq al-Qamar).pdf
Mirza Gazanfar Ali Baig
 
How to create Record rules in odoo 18 - Odoo Slides
How to create Record rules in odoo 18 - Odoo  SlidesHow to create Record rules in odoo 18 - Odoo  Slides
How to create Record rules in odoo 18 - Odoo Slides
Celine George
 
Policies, procedures, subject selection and QTAC.pptx
Policies, procedures, subject selection and QTAC.pptxPolicies, procedures, subject selection and QTAC.pptx
Policies, procedures, subject selection and QTAC.pptx
mansk2
 
Unit 4 Reverse Engineering Tools Functionalities & Use-Cases.pdf
Unit 4  Reverse Engineering Tools  Functionalities & Use-Cases.pdfUnit 4  Reverse Engineering Tools  Functionalities & Use-Cases.pdf
Unit 4 Reverse Engineering Tools Functionalities & Use-Cases.pdf
ChatanBawankar
 
Protest - Student Revision Booklet For VCE English
Protest - Student Revision Booklet For VCE EnglishProtest - Student Revision Booklet For VCE English
Protest - Student Revision Booklet For VCE English
jpinnuck
 
How to Add a Custom Menu, List view and FIlters in the Customer Portal Odoo 18
How to Add a Custom Menu, List view and FIlters in the Customer Portal Odoo 18How to Add a Custom Menu, List view and FIlters in the Customer Portal Odoo 18
How to Add a Custom Menu, List view and FIlters in the Customer Portal Odoo 18
Celine George
 
Philosophical Basis of Curriculum Designing
Philosophical Basis of Curriculum DesigningPhilosophical Basis of Curriculum Designing
Philosophical Basis of Curriculum Designing
Ankit Choudhary
 
KNN,Weighted KNN,Nearest Centroid Classifier,Locally Weighted Regression
KNN,Weighted KNN,Nearest Centroid Classifier,Locally Weighted RegressionKNN,Weighted KNN,Nearest Centroid Classifier,Locally Weighted Regression
KNN,Weighted KNN,Nearest Centroid Classifier,Locally Weighted Regression
Global Academy of Technology
 
TechSoup Introduction to Generative AI and Copilot - 2025.05.22.pdf
TechSoup Introduction to Generative AI and Copilot - 2025.05.22.pdfTechSoup Introduction to Generative AI and Copilot - 2025.05.22.pdf
TechSoup Introduction to Generative AI and Copilot - 2025.05.22.pdf
TechSoup
 
Taxonomy and Systematics: Classification and Diversity of Insects.pptx
Taxonomy and Systematics: Classification and Diversity of Insects.pptxTaxonomy and Systematics: Classification and Diversity of Insects.pptx
Taxonomy and Systematics: Classification and Diversity of Insects.pptx
Arshad Shaikh
 

lecture 10

  • 1. CS 332: Algorithms Linear-Time Sorting Continued Medians and Order Statistics
  • 2. Review: Comparison Sorts Comparison sorts: O(n lg n) at best Model sort with decision tree Path down tree = execution trace of algorithm Leaves of tree = possible permutations of input Tree must have n! leaves, so O(n lg n) height
  • 3. Review: Counting Sort Counting sort: Assumption: input is in the range 1..k Basic idea: Count number of elements k  each element i Use that number to place i in position k of sorted array No comparisons! Runs in time O(n + k) Stable sort Does not sort in place: O(n) array to hold sorted output O(k) array for scratch storage
  • 4. Review: Counting Sort 1 CountingSort(A, B, k) 2 for i=1 to k 3 C[i]= 0; 4 for j=1 to n 5 C[A[j]] += 1; 6 for i=2 to k 7 C[i] = C[i] + C[i-1]; 8 for j=n downto 1 9 B[C[A[j]]] = A[j]; 10 C[A[j]] -= 1;
  • 5. Review: Radix Sort How did IBM get rich originally? Answer: punched card readers for census tabulation in early 1900’s. In particular, a card sorter that could sort cards into different bins Each column can be punched in 12 places Decimal digits use 10 places Problem: only one column can be sorted on at a time
  • 6. Review: Radix Sort Intuitively, you might sort on the most significant digit, then the second msd, etc. Problem: lots of intermediate piles of cards (read: scratch arrays) to keep track of Key idea: sort the least significant digit first RadixSort(A, d) for i=1 to d StableSort(A) on digit i Example: Fig 9.3
  • 7. Radix Sort Can we prove it will work? Sketch of an inductive argument (induction on the number of passes): Assume lower-order digits {j: j<i}are sorted Show that sorting next digit i leaves array correctly sorted If two digits at position i are different, ordering numbers by that digit is correct (lower-order digits irrelevant) If they are the same, numbers are already sorted on the lower-order digits. Since we use a stable sort, the numbers stay in the right order
  • 8. Radix Sort What sort will we use to sort on digits? Counting sort is obvious choice: Sort n numbers on digits that range from 1.. k Time: O( n + k ) Each pass over n numbers with d digits takes time O( n+k ), so total time O( dn+dk ) When d is constant and k= O( n ), takes O( n ) time How many bits in a computer word?
  • 9. Radix Sort Problem: sort 1 million 64-bit numbers Treat as four-digit radix 2 16 numbers Can sort in just four passes with radix sort! Compares well with typical O( n lg n ) comparison sort Requires approx lg n = 20 operations per number being sorted So why would we ever use anything but radix sort?
  • 10. Radix Sort In general, radix sort based on counting sort is Fast Asymptotically fast (i.e., O( n )) Simple to code A good choice To think about: Can radix sort be used on floating-point numbers?
  • 11. Summary: Radix Sort Radix sort: Assumption: input has d digits ranging from 0 to k Basic idea: Sort elements by digit starting with least significant Use a stable sort (like counting sort) for each stage Each pass over n numbers with d digits takes time O( n+k ), so total time O( dn+dk ) When d is constant and k= O( n ), takes O( n ) time Fast! Stable! Simple! Doesn’t sort in place
  • 12. Bucket Sort Bucket sort Assumption: input is n reals from [0, 1) Basic idea: Create n linked lists ( buckets ) to divide interval [0,1) into subintervals of size 1/ n Add each input element to appropriate bucket and sort buckets with insertion sort Uniform input distribution  O(1) bucket size Therefore the expected total time is O(n) These ideas will return when we study hash tables
  • 13. Order Statistics The i th order statistic in a set of n elements is the i th smallest element The minimum is thus the 1st order statistic The maximum is (duh) the n th order statistic The median is the n /2 order statistic If n is even, there are 2 medians How can we calculate order statistics? What is the running time?
  • 14. Order Statistics How many comparisons are needed to find the minimum element in a set? The maximum? Can we find the minimum and maximum with less than twice the cost? Yes: Walk through elements by pairs Compare each element in pair to the other Compare the largest to maximum, smallest to minimum Total cost: 3 comparisons per 2 elements = O(3n/2)
  • 15. Finding Order Statistics: The Selection Problem A more interesting problem is selection : finding the i th smallest element of a set We will show: A practical randomized algorithm with O(n) expected running time A cool algorithm of theoretical interest only with O(n) worst-case running time
  • 16. Randomized Selection Key idea: use partition() from quicksort But, only need to examine one subarray This savings shows up in running time: O(n) We will again use a slightly different partition than the book: q = RandomizedPartition(A, p, r)  A[q]  A[q] q p r
  • 17. Randomized Selection RandomizedSelect(A, p, r, i) if (p == r) then return A[p]; q = RandomizedPartition(A, p, r) k = q - p + 1; if (i == k) then return A[q]; // not in book if (i < k) then return RandomizedSelect(A, p, q-1, i); else return RandomizedSelect(A, q+1, r, i-k);  A[q]  A[q] k q p r
  • 18. Randomized Selection Analyzing RandomizedSelect() Worst case: partition always 0:n-1 T(n) = T(n-1) + O(n) = ??? = O(n 2 ) (arithmetic series) No better than sorting! “ Best” case: suppose a 9:1 partition T(n) = T(9 n /10) + O(n) = ??? = O(n) (Master Theorem, case 3) Better than sorting! What if this had been a 99:1 split?
  • 19. Randomized Selection Average case For upper bound, assume i th element always falls in larger side of partition: Let’s show that T( n ) = O( n ) by substitution What happened here?
  • 20. Randomized Selection Assume T( n )  cn for sufficiently large c : What happened here? “ Split” the recurrence What happened here? What happened here? What happened here? The recurrence we started with Substitute T(n)  cn for T(k) Expand arithmetic series Multiply it out
  • 21. Randomized Selection Assume T( n )  cn for sufficiently large c : What happened here? Subtract c/2 What happened here? What happened here? What happened here? The recurrence so far Multiply it out Rearrange the arithmetic What we set out to prove
  • 22. Worst-Case Linear-Time Selection Randomized algorithm works well in practice What follows is a worst-case linear time algorithm, really of theoretical interest only Basic idea: Generate a good partitioning element Call this element x
  • 23. Worst-Case Linear-Time Selection The algorithm in words: 1. Divide n elements into groups of 5 2. Find median of each group ( How? How long? ) 3. Use Select() recursively to find median x of the  n/5  medians 4. Partition the n elements around x . Let k = rank( x ) 5. if (i == k) then return x if (i < k) then use Select() recursively to find i th smallest element in first partition else (i > k) use Select() recursively to find ( i-k )th smallest element in last partition
  • 24. Worst-Case Linear-Time Selection (Sketch situation on the board) How many of the 5-element medians are  x? At least 1/2 of the medians =  n/5  / 2  =  n/10  How many elements are  x? At least 3  n/10  elements For large n , 3  n/10   n/4 (How large?) So at least n /4 elements  x Similarly: at least n /4 elements  x
  • 25. Worst-Case Linear-Time Selection Thus after partitioning around x , step 5 will call Select() on at most 3 n /4 elements The recurrence is therefore: ??? ??? ??? ??? ???  n/5   n/5 Substitute T(n) = cn Combine fractions Express in desired form What we set out to prove
  • 26. Worst-Case Linear-Time Selection Intuitively: Work at each level is a constant fraction (19/20) smaller Geometric progression! Thus the O(n) work at the root dominates
  • 27. Linear-Time Median Selection Given a “black box” O(n) median algorithm, what can we do? i th order statistic: Find median x Partition input around x if ( i  (n+1)/2) recursively find i th element of first half else find ( i - (n+1)/2)th element in second half T(n) = T(n/2) + O(n) = O(n) Can you think of an application to sorting?
  • 28. Linear-Time Median Selection Worst-case O(n lg n) quicksort Find median x and partition around it Recursively quicksort two halves T(n) = 2T(n/2) + O(n) = O(n lg n)