CSE 373: Data Structures & Algorithms Finish Sor

CSE 373: Data Structures & Algorithms Finish Sor

CSE 373: Data Structures & Algorithms Finish Sor:ng; Induc:on; Recurrence Relaons Riley Porter Winter 2017 CSE373: Data Structures & Algorithms 1 Course Logiscs • HW5 due today! Check your submission please (download and expand the zip) • HW6 out already à sor:ng (and to a lesser degree reading specs/other files/tests) CSE373: Data Structures & Algorithms 2 Review: Sor:ng: The Big Picture O(n2) O(n) Simple Fancier Comparison Specialized Handling algorithms: algorithms: lower bound: algorithms: huge data O(n2) O(n log n) Ω(n log n) O(n) sets Inser:on sort Heap sort Bucket sort External Selec:on sort Merge sort Radix sort sorng Bubble sort Quick sort (avg) Shell sort … … CSE373: Data Structures & 3 Algorithms Non-Comparison Sorts • Bucket Sort: – every possible element in our domain is known – the domain is relavely small (ex: numbers 1-100, all sec:ons AA-AF) • Radix Sort: – we have a base we can use to bucket sort our domain in a series of passes (ex: 0-9 for decimal numbers, ascii values for chars) CSE373: Data Structures & 4 Algorithms Example: Bucket Sort Quiz scores (0-5 possible): CJ Cregg – 5 count array Donna Moss – 5 0 0 Jed Bartlet – 4 1 0 Josh Lyman – 4 2 0 Leo McGarry – 5 3 0 Sam Seaborn – 2 4 0 Toby Ziegler – 3 5 0 CSE373: Data Structures & Algorithms 5 Example: Bucket Sort Quiz scores (0-5 possible): CJ Cregg – 5 count array Donna Moss – 5 0 0 Jed Bartlet – 4 1 0 Josh Lyman – 4 2 0 Leo McGarry – 5 3 0 Sam Seaborn – 2 4 0 Toby Ziegler – 3 5 1 CSE373: Data Structures & Algorithms 6 Example: Bucket Sort Quiz scores (0-5 possible): CJ Cregg – 5 count array Donna Moss – 5 0 0 Jed Bartlet – 4 1 0 Josh Lyman – 4 2 0 Leo McGarry – 5 3 0 Sam Seaborn – 2 4 0 Toby Ziegler – 3 5 2 CSE373: Data Structures & Algorithms 7 Example: Bucket Sort Quiz scores (0-5 possible): CJ Cregg – 5 count array Donna Moss – 5 0 0 Jed Bartlet – 4 1 0 Josh Lyman – 4 2 0 Leo McGarry – 5 3 0 Sam Seaborn – 2 4 1 Toby Ziegler – 3 5 2 CSE373: Data Structures & Algorithms 8 Example: Bucket Sort Quiz scores (0-5 possible): CJ Cregg – 5 count array Donna Moss – 5 0 0 Jed Bartlet – 4 1 0 Josh Lyman – 4 2 0 Leo McGarry – 5 3 0 Sam Seaborn – 2 4 2 Toby Ziegler – 3 5 2 CSE373: Data Structures & Algorithms 9 Example: Bucket Sort Quiz scores (0-5 possible): CJ Cregg – 5 count array Donna Moss – 5 0 0 Jed Bartlet – 4 1 0 Josh Lyman – 4 2 0 Leo McGarry – 5 3 0 Sam Seaborn – 2 4 2 Toby Ziegler – 3 5 3 CSE373: Data Structures & Algorithms 10 Example: Bucket Sort Quiz scores (0-5 possible): CJ Cregg – 5 count array Donna Moss – 5 0 0 Jed Bartlet – 4 1 0 Josh Lyman – 4 2 1 Leo McGarry – 5 3 0 Sam Seaborn – 2 4 2 Toby Ziegler – 3 5 3 CSE373: Data Structures & Algorithms 11 Example: Bucket Sort Quiz scores (0-5 possible): CJ Cregg – 5 count array Donna Moss – 5 0 0 Jed Bartlet – 4 1 0 Josh Lyman – 4 2 1 Leo McGarry – 5 3 1 Sam Seaborn – 2 4 2 Toby Ziegler – 3 5 3 CSE373: Data Structures & Algorithms 12 Example: Bucket Sort count array Output, sorted scores: 2, 3, 4, 4, 5, 5, 5 0 0 1 0 2 1 3 1 4 2 5 3 CSE373: Data Structures & Algorithms 13 Example: Bucket Sort What if we wanted to keep track of who got which score? Quiz scores (0-5 possible): CJ Cregg – 5 count array Donna Moss – 5 0 / Jed Bartlet – 4 1 / Josh Lyman – 4 2 / Leo McGarry – 5 Sam Seaborn – 2 3 / Toby Ziegler – 3 4 / 5 / CSE373: Data Structures & Algorithms 14 Example: Bucket Sort What if we wanted to keep track of who got which score? Quiz scores (0-5 possible): CJ Cregg – 5 count array Donna Moss – 5 0 / Jed Bartlet – 4 1 / Josh Lyman – 4 2 / Leo McGarry – 5 Sam Seaborn – 2 3 / Toby Ziegler – 3 4 / 5 CJ Cregg CSE373: Data Structures & Algorithms 15 Example: Bucket Sort What if we wanted to keep track of who got which score? Quiz scores (0-5 possible): CJ Cregg – 5 count array Donna Moss – 5 0 / Jed Bartlet – 4 1 / Josh Lyman – 4 2 / Leo McGarry – 5 Sam Seaborn – 2 3 / Toby Ziegler – 3 4 / 5 CJ Cregg Donna Moss CSE373: Data Structures & Algorithms 16 Example: Bucket Sort What if we wanted to keep track of who got which score? Quiz scores (0-5 possible): CJ Cregg – 5 count array Donna Moss – 5 0 / Jed Bartlet – 4 1 / Josh Lyman – 4 2 / Leo McGarry – 5 Sam Seaborn – 2 3 / Toby Ziegler – 3 4 Jed Bartlet Josh Lyman 5 CJ Cregg Donna Moss Leo McGarry CSE373: Data Structures & Algorithms 17 Example: Bucket Sort What if we wanted to keep track of who got which score? Quiz scores (0-5 possible): CJ Cregg – 5 count array Donna Moss – 5 0 / Jed Bartlet – 4 1 / Josh Lyman – 4 2 Sam Seaborn Leo McGarry – 5 Sam Seaborn – 2 3 / Toby Ziegler – 3 4 Jed Bartlet Josh Lyman 5 CJ Cregg Donna Moss Leo McGarry CSE373: Data Structures & Algorithms 18 Example: Bucket Sort What if we wanted to keep track of who got which score? Quiz scores (0-5 possible): CJ Cregg – 5 count array Donna Moss – 5 0 / Jed Bartlet – 4 1 / Josh Lyman – 4 2 Sam Seaborn Leo McGarry – 5 Sam Seaborn – 2 3 Toby Ziegler Toby Ziegler – 3 4 Jed Bartlet Josh Lyman 5 CJ Cregg Donna Moss Leo McGarry CSE373: Data Structures & Algorithms 19 Example: Bucket Sort Final output: (Sam Seaborn, 2), (Toby Ziegler, 3), (Jed Bartlet, 4), (Josh Lyman, 4), (CJ Cregg, 5), (Donna Moss, 5), (Leo McGarry, 5) count array 0 / 1 / 2 Sam Seaborn 3 Toby Ziegler 4 Jed Bartlet Josh Lyman 5 CJ Cregg Donna Moss Leo McGarry CSE373: Data Structures & Algorithms 20 Example: Radix Sort What if these scores were in the range (0-300)? CJ Cregg – 51 Donna Moss – 125 Jed Bartlet – 243 Josh Lyman – 34 Leo McGarry – 299 Sam Seaborn – 103 Toby Ziegler – 9 The count array we were using before would be a lot larger and the complexity for the final pass would be O(K + N) where K = 301 and N =7 CSE373: Data Structures & Algorithms 21 Radix Sort: Example Radix = 10 0 1 2 3 4 5 6 7 8 9 (digits are 0-9) Input: CJ Cregg – 051 Donna Moss – 125 Jed Bartlet – 243 Josh Lyman – 034 Leo McGarry – 299 Sam Seaborn – 103 Toby Ziegler – 009 First pass: bucket sort input in given order by ones digit CSE373: Data Structures & 22 Algorithms Radix Sort: Example Radix = 10 0 1 2 3 4 5 6 7 8 9 (digits are 0-9) Input: CJ Cregg – 051 Donna Moss – 125 051 - CJ Cregg Jed Bartlet – 243 Josh Lyman – 034 Leo McGarry – 299 Sam Seaborn – 103 Toby Ziegler – 009 First pass: bucket sort input in given order by ones digit CSE373: Data Structures & 23 Algorithms Radix Sort: Example Radix = 10 0 1 2 3 4 5 6 7 8 9 (digits are 0-9) Input: CJ Cregg – 051 125 – Donna Moss – 125 051 - CJ Cregg Donna Jed Bartlet – 243 Moss Josh Lyman – 034 Leo McGarry – 299 Sam Seaborn – 103 Toby Ziegler – 009 First pass: bucket sort input in given order by ones digit CSE373: Data Structures & 24 Algorithms Radix Sort: Example Radix = 10 0 1 2 3 4 5 6 7 8 9 (digits are 0-9) Input: CJ Cregg – 051 243 – 125 – Donna Moss – 125 051 - CJ Cregg Jed Donna Jed Bartlet – 243 Bartlet Moss Josh Lyman – 034 Leo McGarry – 299 Sam Seaborn – 103 Toby Ziegler – 009 First pass: bucket sort input in given order by ones digit CSE373: Data Structures & 25 Algorithms Radix Sort: Example Radix = 10 0 1 2 3 4 5 6 7 8 9 (digits are 0-9) Input: CJ Cregg – 051 243 – 125 – Donna Moss – 125 051 - CJ Cregg Jed Donna Jed Bartlet – 243 Bartlet Moss Josh Lyman – 034 Leo McGarry – 299 034 – Sam Seaborn – 103 Josh Toby Ziegler – 009 Lyman First pass: bucket sort input in given order by ones digit CSE373: Data Structures & 26 Algorithms Radix Sort: Example Radix = 10 0 1 2 3 4 5 6 7 8 9 (digits are 0-9) Input: CJ Cregg – 051 299 – Leo 243 – 125 – Donna Moss – 125 051 - CJ McGarry Cregg Jed Donna Jed Bartlet – 243 Bartlet Moss Josh Lyman – 034 Leo McGarry – 299 034 – Sam Seaborn – 103 Josh Toby Ziegler – 009 Lyman First pass: bucket sort input in given order by ones digit CSE373: Data Structures & 27 Algorithms Radix Sort: Example Radix = 10 0 1 2 3 4 5 6 7 8 9 (digits are 0-9) Input: CJ Cregg – 051 299 – Leo 243 – 125 – Donna Moss – 125 051 - CJ McGarry Cregg Jed Donna Jed Bartlet – 243 Bartlet Moss Josh Lyman – 034 Leo McGarry – 299 034 – Sam Seaborn – 103 Josh Toby Ziegler – 009 103 – Sam Lyman Seaborn First pass: bucket sort input in given order by ones digit CSE373: Data Structures & 28 Algorithms Radix Sort: Example Radix = 10 0 1 2 3 4 5 6 7 8 9 (digits are 0-9) Input: CJ Cregg – 051 299 – Leo 243 – 125 – Donna Moss – 125 051 - CJ McGarry Cregg Jed Donna Jed Bartlet – 243 Bartlet Moss Josh Lyman – 034 Leo McGarry – 299 034 – Sam Seaborn – 103 Josh Toby Ziegler – 009 103 – Sam Lyman 009 – Toby Seaborn Ziegler First pass: bucket sort input in given order by ones digit CSE373: Data Structures & 29 Algorithms Radix Sort: Example Radix = 10 0 1 2 3 4 5 6 7 8 9 (digits are 0-9) New Input Order: CJ Cregg – 051 Jed Bartlet – 243 Sam Seaborn – 103 Josh Lyman – 034 Donna Moss – 125 Leo McGarry – 299 Toby Ziegler – 009 Ready for second pass: bucket sort input in given order by tens digit CSE373: Data Structures & 30 Algorithms Radix Sort: Example Radix = 10 0 1 2 3 4 5 6 7 8 9 (digits are 0-9) New Input Order: CJ Cregg – 051 Jed Bartlet – 243 051 - CJ Cregg Sam Seaborn – 103 Josh Lyman – 034 Donna Moss – 125 Leo McGarry – 299 Toby Ziegler – 009 Ready for second pass: bucket sort input in given order by tens digit CSE373: Data Structures & 31 Algorithms Radix Sort: Example Radix = 10 0 1 2 3 4 5 6 7 8 9 (digits are 0-9) New Input Order: CJ Cregg – 051 243 – Jed Bartlet – 243 051 - CJ Jed Cregg Sam Seaborn – 103 Bartlet Josh Lyman – 034 Donna Moss – 125 Leo McGarry – 299 Toby Ziegler – 009 Ready for second pass: bucket sort input in given order by tens digit CSE373: Data Structures & 32 Algorithms Radix Sort: Example Radix = 10 0 1 2 3 4 5 6 7 8 9 (digits are 0-9) New Input Order: CJ Cregg – 051

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    63 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us