1 / 26

Lecture 25: BUCKET SORT & RADIX Sort

CSC 213 – Large Scale Programming. Lecture 25: BUCKET SORT & RADIX Sort. Bucket-Sort. Buckets, B , is array of Sequence Sorts Collection , C , in two phases: Remove each element v from C & add to B [ v ] Move elements from each bucket back to C. A. B. C. Bucket-Sort Algorithm.

derry
Download Presentation

Lecture 25: BUCKET SORT & RADIX Sort

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CSC 213 – Large Scale Programming Lecture 25:BUCKET SORT & RADIX Sort

  2. Bucket-Sort • Buckets, B, is array of Sequence • Sorts Collection, C, in two phases: • Remove each elementv from C & add to B[v] • Move elements from each bucket back to C A B C

  3. Bucket-Sort Algorithm AlgorithmbucketSort(Sequence<Integer>C)B=newSequence<Integer>[10] // & instantiate eachSequence // Phase 1 for each element v in CB[v].addLast(v) // Assumes each number in C between 0 & 9endfor// Phase 2loc = 0for each Sequenceb in Bfor each element v in bC.set(loc,v)loc+= 1endforendfor 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 • For this to work, values must be legal indices • Non-negative integers only can be used Sorting occurs without comparing objects

  7. Bucket Sort Properties • 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 • (Bubble-sort & Merge-sort are other stable sorts)

  8. Bucket Sort Extensions • Use Comparator for Bucket-sort • Get index for vusing compare(v, null) • Comparatorfor booleans could return • 0when vis false • 1 when vis true • Comparator for US states, could return • Annual per capita consumption of Jello • Consumption of jellooverall, in cubic feet • State’s ranking by population

  9. Bucket Sort Extensions • State’s ranking by population

  10. Bucket Sort Extensions • Extended Bucket-sort works with many types • Limited set of data neededfor this to work • Need way to enumeratevalues of the set

  11. Bucket Sort Extensions • Extended Bucket-sort works with many types • Limited set of data neededfor this to work • Need way to enumeratevalues of the set enumerateis subtle hint

  12. d-Tuples • Combination of d values such as (k1, k2, …, kd) • ki is ith dimension of the tuple • A point (x,y,z) is 3-tuple • xis1st dimension’s value • Value of 2nd dimension isy • zis3rd dimension’s value

  13. Lexicographic Order • Assume a&bare both d-tuples • a= (a1,a2, …, ad) • b= (b1,b2, …, bd) • Can say a<bif and only if • a1< b1OR • a1= b1&& (a2, …, ad) < (b2, …, bd) • Order these 2-tuples using previous definition(3 4) (7 8) (3 2) (1 4) (4 8)

  14. Lexicographic Order • Assume a&bare both d-tuples • a= (a1,a2, …, ad) • b= (b1,b2, …, bd) • Can say a<bif and only if • a1< b1OR • a1= b1&& (a2, …, ad) < (b2, …, bd) • 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;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 “L E T T E R S” “L I N G E R S”

  16. Radix-Sort • Very fast sort for data expressed as d-tuple • 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 intcan be used for sorting, also 1 0 0 1 3 7 2 9 1 0 0 9 2 2 1 0

  17. Radix-Sort For Integers • Represent int as a d-tuple of digits:621010 = 1111102041010 = 0001002 • Decimal digits needs 10 buckets to use for sorting • Ordering using their bits needs 2 buckets • O(d∙n) time needed to run Radix-sort • d is length of longest element in input • In most cases value of dis 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 Radix-sort 1001 0010 1101 0001 1110

  19. Radix-Sort In Action • List of 4-bit integers sorted using Radix-sort 1001 0010 0010 1110 1101 1001 0001 1101 0001 1110

  20. Radix-Sort In Action • List of 4-bit integers sorted using Radix-sort 1001 0010 1001 0010 1110 1101 1101 1001 0001 0001 1101 0010 0001 1110 1110

  21. Radix-Sort In Action • List of 4-bit integers sorted using Radix-sort 1001 0010 1001 1001 0010 1110 1101 0001 1101 1001 0001 0010 0001 1101 0010 1101 0001 1110 1110 1110

  22. Radix-Sort In Action • List of 4-bit integers sorted using Radix-sort 1001 0010 1001 1001 0001 0010 1110 1101 0001 0010 1101 1001 0001 0010 1001 0001 1101 0010 1101 1101 0001 1110 1110 1110 1110

  23. Radix-Sort AlgorithmradixSort(Sequence<Integer>C) // Works from least to most significant value for bit = 0 to 30C = bucketSort(C, bit) // Sort C using the specified bitendfor 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 AlgorithmradixSort(Sequence<Integer>C) // Works from least to most significant value for bit = 0 to 30C = bucketSort(C, bit) // Sort C using the specified bitendfor 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 AlgorithmradixSort(Sequence<Integer>C) // Works from least to most significant value for bit = 0 to 30C = bucketSort(C, bit) // Sort C using the specified bitendfor return C • What is big-Oh complexity for Radix-Sort? • Call in loop uses each element twice O(n) • Loop repeats once per digitto complete sort * O(1) O(log n) times (?)O(n log n)

  26. For Next Lecture • Review requirements for program #2 • 1st 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?

More Related