tenSessionScratchL8.ppt

Download Report

Transcript tenSessionScratchL8.ppt

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.)
Make list L and also a variable for
its Length
Our list
Ask the user for list length after the
user hits key ‘L’
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.
After the input loop is completed,
state is shown
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.