Bucket Sort: Sorting Integers
Sorting (Part II) • The goal: sort N numbers, all between 1 to k.
CSE 373 • Example: sort 8 numbers 3,6,7,4,11,3,5,7. All
between 1 to 12.
Data Structures
• The method: Use an array of k queues. Queue j
Unit 17 (for 1 ≤ j ≤ k) keeps the input numbers whose
value is j.
Reading: Section 3.2.6 Radix sort • Each queue is denoted ‘a bucket’.
Section 7.6 Mergesort, Section 7.7, Quicksort,
Sections 7.8 Lower bound • Scan the list and put the elements in the buckets.
• Output the content of the buckets from 1 to k.
2
Bucket Sort: Sorting Integers Radix Sort: Sorting integers
• Example: sort 8 numbers 3,6,7,4,11,3,9,7 all • Historically goes back to the 1890 census.
between 1 to 12. • Radix sort = multi-pass bucket sort of integers
• Step 1: scan the list and put the elements in in the range 0 to BP-1
the queues
• Bucket-sort from least significant to most
1 2 3 4 5 6 7 8 9 10 11 12
significant “digit” (base B)
3 4 6 7 9 11
3 7 • Requires P(B+N) operations where P is the
• Step 2: concatenate the queues number of passes (the number of base B digits
3 4 6 7 9 11
3,3,4,6,7,7,9,11 in the largest possible input number).
3 7
• If P and B are constants then O(N) time to sort!
• Time complexity: O(n+k).
3 4
Radix Sort Example Radix Sort Example
Input data After 1st pass Bucket sort
Bucket sort After 1st pass by 10’s After 2nd pass
478 721
by 1’s digit digit 3
537 3 721
123 3 9
9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
721 537 123 721
721 3 537 478 9 03 721 537 67 478 123
3 123 67 38 67 537
38 67 09 123 38 537
478
123 38 478 38
67 9 38 67
9 478
This example uses
B=10 and base 10
digits for simplicity of
demonstration. Larger
bucket counts should
be used in an actual
implementation.
5 6
Radix Sort Example Properties of Radix Sort
Bucket sort
After 2nd pass by 100’s
After 3rd pass • Not in-place
3 digit 3
9 9
› needs lots of auxiliary storage.
721 0 1 2 3 4 5 6 7 8 9 38
123 003 123 478 537 721 67 • Stable
537 009 123
38 038 478
› equal keys always end up in same bucket in the
67 067 537 same order.
478 721
• Fast
› Time to sort N numbers in the range 0 to BP-1 is
Invariant: after k passes the low order k digits are sorted.
O(P(B+N)) (P iterations, B buckets in each)
7 8