+ All Categories
Home > Documents > An intro to programming concepts with Scratch Session 8 of 10 sessions Working with lists; sorting a...

An intro to programming concepts with Scratch Session 8 of 10 sessions Working with lists; sorting a...

Date post: 14-Dec-2015
Category:
Upload: mattie-marrs
View: 218 times
Download: 2 times
Share this document with a friend
26
An intro to programming concepts with Scratch Session 8 of 10 sessions Working with lists; sorting a list
Transcript

An intro to programming concepts with Scratch

Session 8of 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.


Recommended