COSC 3101A - Design and Analysis of Algorithms 4 Quicksort Medians and Order Statistics Many of these slides are taken from Monica Nicolescu, Univ. of.

Slides:



Advertisements
Similar presentations
Comp 122, Spring 2004 Order Statistics. order - 2 Lin / Devi Comp 122 Order Statistic i th order statistic: i th smallest element of a set of n elements.
Advertisements

David Luebke 1 4/22/2015 CS 332: Algorithms Quicksort.
Algorithms Analysis Lecture 6 Quicksort. Quick Sort Divide and Conquer.
CS Section 600 CS Section 002 Dr. Angela Guercio Spring 2010.
Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 6.
Medians and Order Statistics
1 Selection --Medians and Order Statistics (Chap. 9) The ith order statistic of n elements S={a 1, a 2,…, a n } : ith smallest elements Also called selection.
Introduction to Algorithms
Introduction to Algorithms Jiafen Liu Sept
Data Structures and Algorithms (AT70.02) Comp. Sc. and Inf. Mgmt. Asian Institute of Technology Instructor: Dr. Sumanta Guha Slide Sources: CLRS “Intro.
Analysis of Algorithms CS 477/677 Sorting – Part B Instructor: George Bebis (Chapter 7)
Spring 2015 Lecture 5: QuickSort & Selection
Analysis of Algorithms CS 477/677 Randomizing Quicksort Instructor: George Bebis (Appendix C.2, Appendix C.3) (Chapter 5, Chapter 7)
Median/Order Statistics Algorithms
Quicksort Ack: Several slides from Prof. Jim Anderson’s COMP 750 notes. UNC Chapel Hill1.
1 Introduction to Randomized Algorithms Md. Aashikur Rahman Azim.
Quicksort Many of the slides are from Prof. Plaisted’s resources at University of North Carolina at Chapel Hill.
CS 253: Algorithms Chapter 7 Mergesort Quicksort Credit: Dr. George Bebis.
Ch. 7 - QuickSort Quick but not Guaranteed. Ch.7 - QuickSort Another Divide-and-Conquer sorting algorithm… As it turns out, MERGESORT and HEAPSORT, although.
Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu.
Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu.
Quicksort CIS 606 Spring Quicksort Worst-case running time: Θ(n 2 ). Expected running time: Θ(n lg n). Constants hidden in Θ(n lg n) are small.
Quicksort!. A practical sorting algorithm Quicksort  Very efficient Tight code Good cache performance Sort in place  Easy to implement  Used in older.
Analysis of Algorithms CS 477/677
1 QuickSort Worst time:  (n 2 ) Expected time:  (nlgn) – Constants in the expected time are small Sorts in place.
Computer Algorithms Lecture 10 Quicksort Ch. 7 Some of these slides are courtesy of D. Plaisted et al, UNC and M. Nicolescu, UNR.
Ch. 8 & 9 – Linear Sorting and Order Statistics What do you trade for speed?
Chapter 7 Quicksort Ack: This presentation is based on the lecture slides from Hsu, Lih- Hsing, as well as various materials from the web.
Order Statistics The ith order statistic in a set of n elements is the ith smallest element The minimum is thus the 1st order statistic The maximum is.
The Selection Problem. 2 Median and Order Statistics In this section, we will study algorithms for finding the i th smallest element in a set of n elements.
Analysis of Algorithms CS 477/677
Introduction to Algorithms Jiafen Liu Sept
David Luebke 1 6/3/2016 CS 332: Algorithms Analyzing Quicksort: Average Case.
Chapter 9: Selection Order Statistics What are an order statistic? min, max median, i th smallest, etc. Selection means finding a particular order statistic.
Order Statistics ● The ith order statistic in a set of n elements is the ith smallest element ● The minimum is thus the 1st order statistic ● The maximum.
CS 361 – Chapters 8-9 Sorting algorithms –Selection, insertion, bubble, “swap” –Merge, quick, stooge –Counting, bucket, radix How to select the n-th largest/smallest.
Order Statistics(Selection Problem)
Deterministic and Randomized Quicksort Andreas Klappenecker.
QuickSort (Ch. 7) Like Merge-Sort, based on the three-step process of divide- and-conquer. Input: An array A[1…n] of comparable elements, the starting.
Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 7.
COSC 3101A - Design and Analysis of Algorithms 6 Lower Bounds for Sorting Counting / Radix / Bucket Sort Many of these slides are taken from Monica Nicolescu,
David Luebke 1 2/19/2016 Priority Queues Quicksort.
CSC317 1 Quicksort on average run time We’ll prove that average run time with random pivots for any input array is O(n log n) Randomness is in choosing.
Mudasser Naseer 1 3/4/2016 CSC 201: Design and Analysis of Algorithms Lecture # 6 Bubblesort Quicksort.
David Luebke 1 6/26/2016 CS 332: Algorithms Linear-Time Sorting Continued Medians and Order Statistics.
1 Chapter 7 Quicksort. 2 About this lecture Introduce Quicksort Running time of Quicksort – Worst-Case – Average-Case.
David Luebke 1 7/2/2016 CS 332: Algorithms Linear-Time Sorting: Review + Bucket Sort Medians and Order Statistics.
Chapter 9: Selection of Order Statistics What are an order statistic? min, max median, i th smallest, etc. Selection means finding a particular order statistic.
Analysis of Algorithms CS 477/677
Order Statistics.
Order Statistics Comp 122, Spring 2004.
Randomized Algorithms
CSC 413/513: Intro to Algorithms
Ch 7: Quicksort Ming-Te Chi
Randomized Algorithms
Lecture 3 / 4 Algorithm Analysis
Medians and Order Statistics
Lecture No 6 Advance Analysis of Institute of Southern Punjab Multan
Order Statistics Comp 550, Spring 2015.
CS 583 Analysis of Algorithms
CS 332: Algorithms Quicksort David Luebke /9/2019.
Ack: Several slides from Prof. Jim Anderson’s COMP 202 notes.
Chapter 7 Quicksort.
Order Statistics Comp 122, Spring 2004.
The Selection Problem.
Quicksort and Randomized Algs
Quicksort Quick sort Correctness of partition - loop invariant
CS200: Algorithm Analysis
Medians and Order Statistics
Presentation transcript:

COSC 3101A - Design and Analysis of Algorithms 4 Quicksort Medians and Order Statistics Many of these slides are taken from Monica Nicolescu, Univ. of Nevada, Reno,

5/25/2004 Lecture 4COSC3101A2 Quicksort (1) Sort an array A[p…r] Divide –Partition the array A into 2 subarrays A[p..q-1] and A[q+1..r], such that each element of A[p..q-1] is smaller than or equal to A[q], which is, in turn, less than or equal to each element in A[q+1..r] –The index (pivot) q is computed Conquer –Recursively sort A[p..q-1] and A[q+1..r] using Quicksort Combine –Trivial: the arrays are sorted in place  no work needed to combine them: the entire array is now sorted x A[p…q-1]A[q+1…r] ≤

5/25/2004 Lecture 4COSC3101A3 QUICKSORT (2) Alg.: QUICKSORT (A, p, r) if p < r then q  PARTITION (A, p, r) QUICKSORT (A, p, q-1) QUICKSORT (A, q+1, r)

5/25/2004 Lecture 4COSC3101A4 Partitioning The Array (1) Given an array A, partition the array into the following subarrays: –A pivot element x = A[q] –Subarray A[p..q-1] such that each element of A[p..q-1] is smaller than or equal to x (the pivot) –Subarray A[q+1..r], such that each element of A[p..q+1] is strictly greater than x (the pivot) Note: the pivot element is not included in any of the two subarrays

5/25/2004 Lecture 4COSC3101A5 Partitioning The Array (2) Alg.: PARTITION(A, p, r) x ← A[r] 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 A[p…i] ≤ xA[i+1…j-1] ≥ x pii+1 rj-1 unknown pivot Chooses the last element of the array as a pivot Grows a subarray [p..i] of elements ≤ x Grows a subarray [i+1..j-1] of elements >x Running Time:  (n), where n=r-p+1 i j

5/25/2004 Lecture 4COSC3101A6 Partition Example

5/25/2004 Lecture 4COSC3101A7 Loop Invariant (1) 1.All entries in A[p.. i] are smaller than the pivot 2.All entries in A[i j - 1] are strictly larger than the pivot 3.A[r] = pivot 4.A[ j.. r -1] elements not yet examined A[p…i] ≤ xA[i+1…j-1] > x pii+1 rj-1 x unknown pivot

5/25/2004 Lecture 4COSC3101A8 Loop Invariant (2) Initialization: Before the loop starts: –r is the pivot –subarrays A[p.. i] and A[i j - 1] are empty –All elements in the array are not examined p,j i r x unknown pivot

5/25/2004 Lecture 4COSC3101A9 Loop Invariant (3) Maintenance: While the loop is running –if A[ j ] ≤ pivot, then i is incremented, A[ j ] and A[i +1] are swapped and then j is incremented –If A[ j ] > pivot, then increment only j A[p…i] ≤ xA[i+1…j-1] > x pii+1 rj-1 x unknown pivot

5/25/2004 Lecture 4COSC3101A10 Maintenance of Loop Invariant (4) x p x >x>x pi ij jr r ≤ x> x ≤ x> x x ≤x≤x x p p i ij jr r ≤ x> x ≤ x> x If A[j] > pivot: only increment j If A[j] ≤ pivot: i is incremented, A[j] and A[i] are swapped and then j is incremented

5/25/2004 Lecture 4COSC3101A11 Loop Invariant (5) Termination: When the loop terminates: –j = r  all elements in A are partitioned into one of the three cases: A[p.. i ] ≤ pivot, A[i r - 1] > pivot, and A[r] = pivot A[p…i] ≤ xA[i+1…j-1] > x pii+1 j=r j-1 x pivot

5/25/2004 Lecture 4COSC3101A12 Performance of Quicksort Worst-case partitioning –One region has NO elements and one has n – 1 elements –Maximally unbalanced Recurrence T(n) = T(n – 1) + T(0) +  (n) T(n) = T(n – 1) +  (n) =  (n 2 ) n n - 1 n - 2 n n n n - 1 n - 2 n  (n 2 )

5/25/2004 Lecture 4COSC3101A13 Performance of Quicksort Best-case partitioning –Partitioning produces two regions of size n/2 Recurrence T(n) = 2T(n/2) +  (n) T(n) =  (nlgn) (Master theorem)

5/25/2004 Lecture 4COSC3101A14 Performance of Quicksort Balanced partitioning –Average case closer to best case than worst case –Partitioning always produces a constant split E.g.: 9-to-1 proportional split T(n) = T(9n/10) + T(n/10) + n

5/25/2004 Lecture 4COSC3101A15 Performance of Quicksort Average case –All permutations of the input numbers are equally likely –On a random input array, we will have a mix of well balanced and unbalanced splits –Good and bad splits are randomly distributed across throughout the tree Alternate of a good and a bad split Nearly well balanced split n n (n – 1)/2(n – 1)/2-1 n (n – 1)/2 Running time of Quicksort when levels alternate between good and bad splits is O(nlgn) combined cost: 2n-1 =  (n) combined cost: n =  (n)

5/25/2004 Lecture 4COSC3101A16 Randomizing Quicksort Randomly permute the elements of the input array before sorting Modify the PARTITION procedure –At each step of the algorithm we exchange element A[r] with an element chosen at random from A[p…r] –The pivot element x = A[r] is equally likely to be any one of the r – p + 1 elements of the subarray

5/25/2004 Lecture 4COSC3101A17 Randomized Algorithms The behavior is determined in part by values produced by a random-number generator –RANDOM (a, b) returns an integer r, where a ≤ r ≤ b and each of the b-a+1 possible values of r is equally likely Algorithm generates its own randomness No input can elicit worst case behavior –Worst case occurs only if we get “unlucky” numbers from the random number generator

5/25/2004 Lecture 4COSC3101A18 Randomized PARTITION Alg.: RANDOMIZED-PARTITION (A, p, r) i ← RANDOM (p, r) exchange A[r] ↔ A[i] return PARTITION (A, p, r)

5/25/2004 Lecture 4COSC3101A19 Randomized Quicksort Alg. : RANDOMIZED-QUICKSORT (A, p, r) if p < r then q ← RANDOMIZED-PARTITION (A, p, r) RANDOMIZED-QUICKSORT (A, p, q - 1) RANDOMIZED-QUICKSORT (A, q + 1, r)

5/25/2004 Lecture 4COSC3101A20 Worst-Case Analysis of Quicksort T(n) = worst-case running time T(n) = max (T(q) + T(n-q-1)) +  (n) 0 ≤ q ≤ n-1 Use substitution method to show that the running time of Quicksort is O(n 2 ) Guess T(n) = O(n 2 ) –Induction goal: T(n) ≤ cn 2 –Induction hypothesis: T(k) ≤ ck 2 for any k ≤ n

5/25/2004 Lecture 4COSC3101A21 Worst-Case Analysis of Quicksort Proof of induction goal: T(n) ≤ max (cq 2 + c(n-q-1) 2 ) +  (n) = 0 ≤ q ≤ n-1 = c  max (q 2 + (n-q-1) 2 ) +  (n) 0 ≤ q ≤ n-1 The expression q 2 + (n-q-1) 2 achieves a maximum over the range 0 ≤ q ≤ n-1 at one of the endpoints max (q 2 + (n - q) 2 ) ≤ (n - 1) 2 = n 2 – 2n ≤ q ≤ n-1 T(n) ≤ cn 2 – 2c(n – 1) +  (n) ≤ cn 2 a large c can be picked to make 2c(n-1) dominate  (n) part

5/25/2004 Lecture 4COSC3101A22 Random Variables and Expectation Consider running time T(n) as a random variable –This variable associates a real number with each possible outcome (split) of partitioning Expected value (expectation, mean) of a discrete random variable X is: E[X] = Σ x x Pr{X = x} –“Average” over all possible values of random variable X

5/25/2004 Lecture 4COSC3101A23 Quicksort Average Case Analysis PARTITION compares the pivot with all the other elements in the array –The pivot element is removed from future consideration each time and never compared again –Each pair of elements can be compared at most once One call to PARTITION takes –O(1) (constant time), plus –the number of instructions that are performed in its for loop (comparisons between the pivot and an element of the array) PARTITION is called at most n times

5/25/2004 Lecture 4COSC3101A24 Number of Comparisons in PARTITION Need to compute the total number of comparisons performed in all calls to PARTITION X ij = I {z i is compared to z j } –For any comparison during the entire execution of the algorithm, not just during one call to PARTITION Indicator random variable I{A} associated with an event A: –I{A} = 1 if A occurs 0 if A does not occur

5/25/2004 Lecture 4COSC3101A25 Example Determine the expected number of heads obtained when flipping a coin –Space of possible values: –Random variable Y: takes on the values H and T, each with probability ½ Indicator random variable X H : the coin coming up heads –Expressed as event Y = H –Counts the number of heads obtain in the flip –X H = I {Y = H} = 1 if Y = H 0 if Y = T The expected number of heads obtained in one flip of the coin is: E[X H ] = E [I {Y = H}] = S = {H, T} 1  Pr{Y = H} + 0  Pr{Y = T} = = 1  ½ + 0  ½ = ½

5/25/2004 Lecture 4COSC3101A26 Lemma The expected value of an indicator random variable X A = I{A} is: E[X A ] = Pr {A} Proof: E[X A ] = E[I{A}] = 1  Pr{A} + 0  Pr{Ā} = Pr{A}

5/25/2004 Lecture 4COSC3101A27 Number of Comparisons in PARTITION Each pair of elements can be compared at most once X is a random variable –Compute the expected value a i n-1 i+1 n by linearity of expectation replaced the expectation of X ij with the probability of the event that z i is compared to z j

5/25/2004 Lecture 4COSC3101A28 When Do We Compare Two Elements? Pivot chosen such as: z i < x < z j –z i and z j will never be compared Only the pivot is compared with elements in both sets –z i and z j will be compared only if one of them will be chosen as pivot before any other element in range z i to z j z1z1 z2z2 z9z9 z8z8 z5z5 z3z3 z4z4 z6z6 z 10 z7z7 {1, 2, 3, 4, 5, 6}{8, 9, 10}{7}

5/25/2004 Lecture 4COSC3101A29 Number of Comparisons in PARTITION Making the choice for a pivot determines which elements will be compared The probability that z i is compared to z j is the probability that either z i or z j is the first element chosen as a pivot from the range z i to z j There are j – i + 1 elements between z i and z j, –Pivot is chosen randomly and independently –The probability that any particular element is the first one chosen is 1/( j - i + 1)

5/25/2004 Lecture 4COSC3101A30 Number of Comparisons in PARTITION Pr{z i is compared to z j } = Pr{z i or z j is the first pivot chosen from Z ij } = Pr{z i is the first pivot chosen from Z ij } + + Pr{z j is the first pivot chosen from Z ij } = 1/( j - i + 1) + 1/( j - i + 1) = 2/( j - i + 1)

5/25/2004 Lecture 4COSC3101A31 Number of Comparisons in PARTITION  Expected running time of Quicksort using RANDOMIZED-PARTITION is O(nlgn) Expected number of comparisons in PARTITION:

5/25/2004 Lecture 4COSC3101A32 Selection General Selection Problem: –select the i-th smallest element form a set of n distinct numbers –that element is larger than exactly i - 1 other elements The selection problem can be solved in O(nlgn) time –Sort the numbers using an O(nlgn) -time algorithm, such as merge sort –Then return the i- th element in the sorted array

5/25/2004 Lecture 4COSC3101A33 Medians and Order Statistics Def.: The i-th order statistic of a set of n elements is the i-th smallest element. The minimum of a set of elements: –The first order statistic i = 1 The maximum of a set of elements: –The n-th order statistic i = n The median is the “halfway point” of the set –i = (n+1)/2, is unique when n is odd –i =  (n+1)/2  = n/2 (lower median) and  (n+1)/2  = n/2+1 (upper median), when n is even

5/25/2004 Lecture 4COSC3101A34 Finding Minimum or Maximum Alg.: MINIMUM (A, n) min ← A[1] for i ← 2 to n do if min > A[i] then min ← A[i] return min How many comparisons are needed? –n – 1: each element, except the minimum, must be compared to a smaller element at least once –The same number of comparisons are needed to find the maximum –The algorithm is optimal with respect to the number of comparisons performed

5/25/2004 Lecture 4COSC3101A35 Simultaneous Min, Max Find min and max independently –Use n – 1 comparisons for each  total of 2n – 2 At most 3n/2 comparisons are needed –Process elements in pairs –Maintain the minimum and maximum of elements seen so far –Don’t compare each element to the minimum and maximum separately –Compare the elements of a pair to each other –Compare the larger element to the maximum so far, and compare the smaller element to the minimum so far –This leads to only 3 comparisons for every 2 elements

5/25/2004 Lecture 4COSC3101A36 Analysis of Simultaneous Min, Max Setting up initial values: –n is odd: –n is even: Total number of comparisons: –n is odd: we do 3(n-1)/2 comparisons –n is even: we do 1 initial comparison + 3(n-2)/2 more comparisons = 3n/2 - 2 comparisons set both min and max to the first element compare the first two elements, assign the smallest one to min and the largest one to max

5/25/2004 Lecture 4COSC3101A37 Example: Simultaneous Min, Max n = 5 (odd), array A = {2, 7, 1, 3, 4} 1.Set min = max = 2 2.Compare elements in pairs: –1 < 7  compare 1 with min and 7 with max  min = 1, max = 7 –3 < 4  compare 3 with min and 4 with max  min = 1, max = 7 We performed: 3(n-1)/2 = 6 comparisons 3 comparisons

5/25/2004 Lecture 4COSC3101A38 Example: Simultaneous Min, Max n = 6 (even), array A = {2, 5, 3, 7, 1, 4} 1.Compare 2 with 5: 2 < 5 2.Set min = 2, max = 5 3.Compare elements in pairs: –3 < 7  compare 3 with min and 7 with max  min = 2, max = 7 –1 < 4  compare 1 with min and 4 with max  min = 1, max = 7 We performed: 3n/2 - 2 = 7 comparisons 3 comparisons 1 comparison

5/25/2004 Lecture 4COSC3101A39 General Selection Problem Select the i-th order statistic (i-th smallest element) form a set of n distinct numbers Idea: –Partition the input array similarly with the approach used for Quicksort (use RANDOMIZED-PARTITION) –Recurse on one side of the partition to look for the i-th element depending on where i is with respect to the pivot Selection of the i- th smallest element of the array A can be done in  (n) time qpr i < k  search in this partition i > k  search in this partition A

5/25/2004 Lecture 4COSC3101A40 Randomized Select Alg.: RANDOMIZED-SELECT (A, p, r, i ) if p = r then return A[p] q ←RANDOMIZED-PARTITION (A, p, r) k ← q - p + 1 if i = k pivot value is the answer then return A[q] elseif i < k then return RANDOMIZED-SELECT (A, p, q-1, i ) else return RANDOMIZED-SELECT (A, q + 1, r, i-k) qpr i < k  search in this partition i > k  search in this partition q-1q+1 pivot

5/25/2004 Lecture 4COSC3101A41 Analysis of Running Time Worst case running time: –If we always partition around the largest/smallest remaining element –Partition takes  (n) time –T(n) = O(1) (choose the pivot) +  (n) (partition) + T(n-1) = 1 + n + T(n-1) =  (n 2 ) q pr n-1 elements  (n 2 )

5/25/2004 Lecture 4COSC3101A42 Analysis of Running Time Expected running time (on average) –T(n) a random variable denoting the running time of RANDOMIZED-SELECT –RANDOMIZED-PARTITION is equally likely to return any element of A as the pivot  –For each k such that 1 ≤ k ≤ n, the subarray A[p.. q] has k elements (all ≤ pivot) with probability 1/n qpr k elements

5/25/2004 Lecture 4COSC3101A43 Analysis of Running Time When we call RANDOMIZED-SELECT we could have three situations: –The algorithm terminates with the correct answer ( i = k ), or –The algorithm recurses on the subarray A[p..q-1], or –The algorithm recurses on the subarray A[q+1..r] The decision depends on where the i -th smallest element falls relative to A[q] To obtain an upper bound for the running time T(n): –assume the i -th smallest element is always in the larger subarray

5/25/2004 Lecture 4COSC3101A44 Analysis of Running Time (cont.) Probability that the event happens The value of the random variable T(n) Summed over all possible values PARTITIONsince select recurses on only one partition

5/25/2004 Lecture 4COSC3101A45 Analysis of Running Time (cont.) If n is even: each term from T(  n/2  ) up to T(n-1) appears exactly twice in the summation If n is odd: these terms appear twice and T(  n/2  ) appears once qpr k -1 elements n - k elements T(n) = O(n) (prove by substitution)

5/25/2004 Lecture 4COSC3101A46 A Better Selection Algorithm Can perform Selection in O(n) Worst Case Idea: guarantee a good split on partitioning –Running time is influenced by how “balanced” are the resulting partitions Use a modified version of PARTITION –Takes as input the element around which to partition

5/25/2004 Lecture 4COSC3101A47 Selection in O(n) Worst Case 1.Divide the n elements into groups of 5   n/5  groups 2.Find the median of each of the  n/5  groups Use insertion sort, then pick the median 3.Use SELECT recursively to find the median x of the  n/5  medians 4.Partition the input array around x, using the modified version of PARTITION There are k-1 elements on the low side of the partition and n-k on the high side 5.If i = k then return x. Otherwise, use SELECT recursively: Find the i -th smallest element on the low side if i < k Find the (i-k) -th smallest element on the high side if i > k A: x1x1 x2x2 x3x3 x  n/5  x x k – 1 elements n - k elements

5/25/2004 Lecture 4COSC3101A48 Example Find the –11th smallest element in array: A = {12, 34, 0, 3, 22, 4, 17, 32, 3, 28, 43, 82, 25, 27, 34, 2,19,12,5,18,20,33, 16, 33, 21, 30, 3, 47} 1.Divide the array into groups of 5 elements

5/25/2004 Lecture 4COSC3101A49 Example (cont.) 2.Sort the groups and find their medians 3.Find the median of the medians 12, 12, 17, 21, 34,

5/25/2004 Lecture 4COSC3101A50 Example (cont.) 4.Partition the array around the median of medians (17) First partition: {12, 0, 3, 4, 3, 2, 12, 5, 16, 3} Pivot: 17 (position of the pivot is q = 11) Second partition: {34, 22, 32, 28, 43, 82, 25, 27, 34, 19, 18, 20, 33, 33, 21, 30, 47} To find the 6-th smallest element we would have to recurse our search in the first partition.

5/25/2004 Lecture 4COSC3101A51 Readings Chapters 7 Chapter 9