270 likes | 381 Views
An intro to programming concepts with Scratch. Session 8 of 10 sessions Working with lists; sorting a list. Session 8 goals. Learn how to represent a list Learn how to sort a list of numbers Learn how to do it in Scratch Free time to work on your own project.
E N D
An intro to programming concepts with Scratch Session 8 of 10 sessions Working with lists; sorting a list
Session 8 goals Learn how to represent a list Learn how to sort a list of numbers Learn how to do it in Scratch Free time to work on your own project
Make a list of real students: we will sort the list (line) by height Half the class lines up; other half observes Who is L[1]? L[2]? … L[8]? If L[1] > L[2], swap positions; else don’t. If L[2] > L[3], swap positions; else don’t. Continue If L[7] > L[8], swap positions; else don’t. What is the result?
Start over at the front of the list and repeat the process If L[1] > L[2], swap positions; else don’t. If L[2] > L[3], swap positions; else don’t. Continue If L[6] > L[7], swap positions; else don’t. Why don’t we consider L[8]? What is the result of these steps?
Start over again at the front and get the 3rd tallest in L[6] If L[1] > L[2], swap positions; else don’t. If L[2] > L[3], swap positions; else don’t. Continue If L[5] > L[6], swap positions; else don’t.
Switch the kids in line with the kids who are observing. Carefully go over the sorting by height. Always compare only two adjacent kids. Count the total number of kid compares.
Exercise: sorting 8 kids by height How many kid compares to get the tallest kid in list position 8? How many kid compares to get the next tallest kid in list position 7? How many compares to get all 8 kids in total height order?
You have discovered BUBBLE SORT (or SINKING SORT) A smaller kid “bubbles” up to the front of the list, one position each pass. The tallest kid sinks all the way to the end of the list in a single pass.
Exercise: sorting numbers Sort the list of numbers using the bubble sort: {34, 17, 23, 19, 12}
Sorting using selection sort[optional: time permitting] At each pass, find the shortest kid and swap to the front of the list.
Start with L[1], L[2], …, L[8] L[1] walks down list comparing height to L[2], L[3], … When L[k] < L[1], put kid L[1] in position k and then kid L[k] keeps going. Repeat until the end of the list is reached. The shortest kid now moves to L[1]
Selection sort pass 2 Pass one puts the shortest kid in position L[1] We need to sort the remaining 7 kids in positions L[2], L[3], …, L[8] Use the same procedure as done in the first pass, but never consider L[1] The result is that the 2nd shortest kid will be position at L[2].
What about selection sort? How many kid compares to position the shortest kid at the 1st position L[1]? How many kid compares to position the 2nd shortest kid at L[2]? … How many total kid compares for the entire sort algorithm? Is this algorithm better than bubble sort?
Algorithms take computer effort Bubble sort and selection sort are good for sorting small lists, but there are better sorts for large lists.
Sorting a list in Scratch Use a list variable; Use an algorithm with nested loops. Difficult content: time is needed.
first pass of bubble sort Let’s first input a list of numbers; (Then we’ll sink the max of the list to the end of the list.)
Repeat Length times, ask the user for item k of the List The user has given 3 items and is being asked for item k=4.
The sinking pass Repeat 4 times If kid L[k] > kid L[k+1], swap them Result is that tallest kid will be at the end L[5]
Largest number sinks to L[5] The swap
Swapping cars in 2-car garage Move car A to street (the copy) Move car B to where car A was Move car A from street to where car B was. We have to swap computer memory contents in the same way.
Exercise for later (hard) Change the sinking loop to be repeated variable M times. Wrap the sinking loop in an outer repeat loop. The outer loop is repeated for k = 1, 2, 3, … , Length-1 The inner loop is repeated for M = Length – k times
Exercise: test sorting lists of different lengths User inputs the Length Programs asks for Length items from the user When ‘s’ pressed, the sort algorithm sinks the max to the end in Length-1 passes.
Work on your own project! Work on your storyline first, then do your coding. Work on your game idea first, then the coding.