Download presentation
Presentation is loading. Please wait.
Published byJasper Goodman Modified over 9 years ago
1
CSC 213 – Large Scale Programming
2
Bucket-Sort Buckets, B, is array of Sequence Sorts Collection, C, in two phases: 1. Remove each element v from C & add to B[v] 2. Move elements from each bucket back to C A B C
3
Bucket-Sort Algorithm Algorithm bucketSort( Sequence C) B = new Sequence [10] // & instantiate each Sequence // Phase 1 for each element v in C B[v].addLast(v) // Assumes each number in C between 0 & 9 endfor // Phase 2 loc = 0 for each Sequence b in B for each element v in b C.set(loc, v) loc += 1 endfor endfor return C
4
Bucket Sort Properties For this to work, values must be legal indices Non-negative integers only can be used Sorting occurs without comparing objects
5
Bucket Sort Properties For this to work, values must be legal indices Non-negative integers only can be used Sorting occurs without comparing objects
6
Bucket Sort Properties
7
For this to work, values must be legal indices Non-negative integers only can be used Sorting occurs without comparing objects Stable sort describes any sort of this type Preserves relative ordering of objects with same value (B UBBLE - SORT & M ERGE - SORT are other stable sorts)
8
Bucket Sort Extensions Use Comparator for B UCKET - SORT Get index for v using compare( v, null) Comparator for booleans could return 0 when v is false 1 when v is true Comparator for US states, could return Annual per capita consumption of Jello Consumption of jello overall, in cubic feet State’s ranking by population
9
Bucket Sort Extensions State’s ranking by population 1 California 2 Texas 3 New York 4 Florida 5 Illinois 6 Pennsylvania 7 Ohio 8 Michigan 9 Georgia
10
Bucket Sort Extensions Extended B UCKET - SORT works with many types Limited set of data needed for this to work enumerate Need way to enumerate values of the set
11
Bucket Sort Extensions Extended B UCKET - SORT works with many types Limited set of data needed for this to work enumerate Need way to enumerate values of the set enumerate is subtle hint
12
d -Tuples Combination of d values such as ( k 1, k 2, …, k d ) k i is i th dimension of the tuple A point ( x, y, z ) is 3-tuple x is 1 st dimension’s value Value of 2 nd dimension is y z is 3 rd dimension’s value
13
Lexicographic Order Assume a & b are both d-tuples a = ( a 1, a 2, …, a d ) b = ( b 1, b 2, …, b d ) Can say a < b if and only if a 1 < b 1 OR a 1 = b 1 && ( a 2, …, a d ) < ( b 2, …, b d ) Order these 2-tuples using previous definition (3 4) (7 8) (3 2) (1 4) (4 8)
14
Lexicographic Order Assume a & b are both d-tuples a = ( a 1, a 2, …, a d ) b = ( b 1, b 2, …, b d ) Can say a < b if and only if a 1 < b 1 OR a 1 = b 1 && ( a 2, …, a d ) < ( b 2, …, b d ) Order these 2-tuples using previous definition (3 4) (7 8) (3 2) (1 4) (4 8) (1 4) (3 2) (3 4) (4 8) (7 8)
15
Radix-Sort Very fast sort for data expressed as d-tuple Cheats to win Cheats to win; faster than sorting’s lower bound Sort performed using d calls to bucket sort Sorts least to most important dimension of tuple Luckily lots of data are d-tuples String is d-tuple of char
16
Radix-Sort Very fast sort for data expressed as d-tuple Cheats to win Cheats to win; faster than sorting’s lower bound Sort performed using d calls to bucket sort Sorts least to most important dimension of tuple Luckily lots of data are d-tuples Digits of an int can be used for sorting, also
17
Radix-Sort For Integers Represent int as a d-tuple of digits: 6210 10 = 111110 2 0410 10 = 000100 2 Decimal digits needs 10 buckets to use for sorting Ordering using their bits needs 2 buckets O (d∙ n ) time needed to run R ADIX - SORT d is length of longest element in input In most cases value of d is constant (d = 31 for int ) Radix sort takes O ( n ) time, ignoring constant
18
Radix-Sort In Action List of 4-bit integers sorted using R ADIX - SORT 1001 0010 1101 0001 1110
19
Radix-Sort In Action List of 4-bit integers sorted using R ADIX - SORT 0010 1110 1001 1101 0001 1001 0010 1101 0001 1110
20
Radix-Sort In Action List of 4-bit integers sorted using R ADIX - SORT 1001 1101 0001 0010 1110 0010 1110 1001 1101 0001 1001 0010 1101 0001 1110
21
Radix-Sort In Action List of 4-bit integers sorted using R ADIX - SORT 1001 0001 0010 1101 1110 1001 1101 0001 0010 1110 0010 1110 1001 1101 0001 1001 0010 1101 0001 1110
22
Radix-Sort In Action List of 4-bit integers sorted using R ADIX - SORT 0001 0010 1001 1101 1110 1001 0001 0010 1101 1110 1001 1101 0001 0010 1110 0010 1110 1001 1101 0001 1001 0010 1101 0001 1110
23
Radix-Sort Algorithm radixSort( Sequence C) // Works from least to most significant value for bit = 0 to 30 C = bucketSort(C, bit) // Sort C using the specified bit endfor return C What is big-Oh complexity for Radix-Sort? Call in loop uses each element twice Loop repeats once per digit to complete sort
24
Radix-Sort Algorithm radixSort( Sequence C) // Works from least to most significant value for bit = 0 to 30 C = bucketSort(C, bit) // Sort C using the specified bit endfor return C What is big-Oh complexity for Radix-Sort? Call in loop uses each element twice O(n) Loop repeats once per digit to complete sort * O(1) O(n)
25
Radix-Sort
26
For Next Lecture Review requirements for program #2 1 st Preliminary deadline is Monday Spend time working on this: design saves coding Reading on Graph ADT for Wednesday Note: these have nothing to do with bar charts What are mathematical graphs? Why are they the basis of everything in CS?
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.