Sorting Algorithms - My Level 1 Computing Resources

advertisement
91074 – Algorithm Languages and
User Interfaces
Sorting: Bubble Sort, Selection Sort,
Insertion Sort, Quick Sort.
Comparisons, Cost of an Algorithm.
Contents
• Sorting Algorithms
• Informal Instructions, Algorithms
and Programs
• High and Low Level Languages
• Translating Between Languages
• User Interfaces
Sorting Algorithms
Sorting: Bubble Sort, Selection Sort,
Insertion Sort, Quick Sort.
Comparisons, Cost of an Algorithm.
Activity
1) In groups, sort a small number of cards numerically
2) What was your algorithm/strategy?
– tell your group.
3) New Rules:
only allowed to look at two cards at a time, only
allowed to swap two, no other moves.
4) What was your algorithm/strategy?
Notes
Sorting Algorithms: There are lots of ways
computers sort lists. In this course we will look at
Bubble sort, Selection Sort, Insertion Sort and Quick
Sort.
Cost of an Algorithm: For sorting giant lists (like a
phone book) on a computer, speed is important. We
call this the ‘cost of the algorithm’ and we measure it
by how many comparisons the algorithm has to make
for a set list size.
Bubble Sort Instructions
1)
2)
3)
4)
Compare the first two
If out of order swap them
Look at the next two,
Repeat Steps 2 and 3 until the (new) end of
the list.
5) Repeat steps 1 – 4 until the list is sorted
Called Bubble Sort because like bubbles in a
glass, the next one makes it way to the top
Bubble Sort Cost
List size
Comparisons required
5
10
6
7
8
10
E4E: Formula?
Example Bubble Sort Video
Bubble Sort and Cost Video (sorting by height)
youtube.com/watch?v=cdsfjU8qUss
Selection Sort
1)
2)
3)
4)
5)
6)
Compare the first two and find the biggest
Then compare the biggest with the next one
Remember which is the (new) biggest
Repeat steps 2 and 3 until the end
Swap the biggest one with the (new) last one
Repeat steps 1 to 5 until the list sorted
Called Selection, because you
are selecting the biggest one
and swapping it to the end.
Selection Sort Cost
List size
Comparisons required
5
10
6
7
8
10
E4E: Formula?
Insertion Sort
1) Compare the first two, and put them in order in a
new list
2) Insert the next item into the right place in the new
list by comparing it with each
item until you find it’s place.
3) Repeat step 2 until the new list is sorted, and the
old list is empty.
Called Insertion, because
you’re inserting into the
correct position in a new list.
Insertion Sort Cost
List size
5
6
7
8
10
E4E: Formula?
Comparisons required
Quick Sort (pivot)
1) Select the next (first) item and make it a pivot
2) Compare each item with the pivot, creating a list of
smaller items and a list of bigger items.
3) Repeat steps 1 and 2 for each sublist, until the list
is sorted
‘Pivot’, Friends on Youtube
Is one of a group of “divide and
conquer” sorting algorithms
Called Pivot, because you
separate the list into smaller
lists based on a pivot.
Quick Sort Cost
List size
5
6
7
8
10
E4E4E: Formula?
Comparisons required
Some Comparisons
Which one is fastest, which is second fastest?
Sorting lists of 20
Bubble
Selection
Insertion
Quick
Click to see them race
Some Comparisons
Which one is fastest, which is second fastest?
Sorting lists of 20
Bubble
Selection
Insertion
Quick
Some Comparisons
Bubble Sort vs Quick Sort (Youtube)
Lists of 30 coloured blocks,
Comparing swaps, not Comparisons
1) Which has the least comparisons?
2) Which has the least swaps?
3) Is comparisons or swaps the best way to measure
“Cost of Algorithm?”
Comparing Sorting Comparisons
List size
Bubble
Selection
Insertion
Quick
(n)
Comparisons
Comparisons
Comparisons
Comparisons
5
6
7
10
20
100
Formula
10
15
21
45
190
4950
½(n2 – n)
10
15
21
45
190
4950
½n2 – ½n
9~
8~
12.5~
11~
Watch
Pivot Video (youtube)
16.5~
13~
31.5~
25~
114~
63~
2574~
500~
¼n2 +¾n –1
n ln n
(Average)
(Average)
Practice Task
Part A) Pick a sort, and six items. Step by step talk
through sorting six items.
E.g Carrot, Apple, Grape, Banana, Eggplant, Feijoa,
- compare Carrot and Apple. (Out of order, so swap)
- Compare Carrot and Grape (in order)
- Compare Grape and …
Part B) Do an insertion sort for 5, 6, 7 and 8 items,
recording the cost.
Part C) Explain how you calculated the cost and say
why that is the cost.
Links
Getting sort data quickly
http://www.mundayweb.com/progs/applets/saas/
Or search “Munday Saas”
Running your own races
http://www.sorting-algorithms.com/
Has eight common sorts
Informal Instructions Algorithms
and Programs
Their Characteristics and Roles
Algorithm Notes
▫ An algorithm is a precise unambiguous
specification of how to accomplish some
computational task in a finite number of welldefined steps.
▫ An algorithm is distinct from a computer program.
▫ An algorithm has a cost (the number of steps it
will perform) for a task.
▫ Different algorithms for the same task may have
different costs.
Informal Instructions, Algorithms
and Programs
Youtube Video (Eating a Chocolate)
youtube.com/watch?v=cdsfjU8qUss
Friendship Algorithm
Characteristics of
Informal Instructions, Algorithms, & Programs
Informal Instructions: Vague, Imprecise, easy to
read/create, interpreted many ways
May have: gaps, bad spelling, incomplete
Form: oral or written,
Algorithms: Precise, single task, has
inputs/outputs, made up of steps, has a cost,
Form: code, flow chart, text
Programs: Many tasks, made up of algorithms,
single file, precise, self running, many tasks
Form: file
When are they used (Roles)
Informal Instructions, Algorithms, & Programs
Informal Instructions: Humans,
communication, ease,
Algorithms: code, computer, part
/functions in prog,
Programs: a variety of functions, self
contained
Programming Concepts
Informal Instructions:
Algorithms:
Programs:
High and Low
Level Languages
Characteristics
High and Low Level Languages Video
Youtube Video (Eating a Chocolate)
youtube.com/watch?v=cdsfjU8qUss
Low Level Languages
Machine Code (1GL)
•
•
•
•
1st Generation Language (1GL)
Numbering system called “Binary”
Also called “Machine Code”
The only way to Program computers in
the 1960s and 70s
• Old Explanation of Binary (before 3GL)
8s
column
4s
column
2s
column
1s
column
2
0
0
1
0
7
0
1
1
1
Binary total
Low Level Languages
Machine Code (1GL)
Binary Game
Binary total
8s
column
4s
column
2s
column
1s
column
3
0
0
1
1
5
13
7
0
1
0
1
1
1
0
0
1
1
1
1
Low Level Languages
Machine Code (1GL)
Flight of the Conchords
• Binary Solo
Big Bang Theory
• Chuck Norris of Numbers
• Palindrome = Reverse ,
1001001  1001001
Low Level Languages
Machine Code (1GL)
Characteristics
• Lowest Level Language
• Very Hard for humans to understand
• Very slow to create code
• No abstraction: Human knows exactly
what’s going on
• Directly interacting with hardware
• Doesn’t need translating or compiling
• Native Language of Computer
Low Level Languages
Assembly (2GL)
Low Level Languages
Assembly (2GL)
• 2nd Generation Language (2GL)
• One step up from Binary/Machine code
• Has functions like Move (MOV), Compare
(CMP), Increment (INC), Jump(JMP)
• Uses Hexadecimal (like web colours #ffffff )
• Has no Compound functions like “If (this,
then do this)” or “Loop (3 times)”
• At the end it is “Assembled” into Binary
• Used when you need exact control over
code (e.g very small microchip, efficient
code needed)
Low Level Languages
Assembly (2GL)
Assembler Example
Hello World
Ignore music and second half
“The main problem with “assembler” jokes is, they are
difficult to read”— scapegrace
Low Level Languages
Assembly (2GL)
Characteristics
• Second Lowest Level Language
• Hard for humans to understand
• Slow to create code
• Little abstraction: Human knows
almost exactly what’s going on
• Needs Assembling into Binary /
Machine Code / 1GL translating or
High Level Languages
(3GL)
Common Programming Languages
Like Basic, C, Java, C# and Scratch
High Level Languages
(3GL)
Features
• Easier to Read and Write (and maintain)
• Portable across different CPU families
• Written as Text
• Many High Level Languages, each with
their own Syntax
High Level Languages
(3GL)
Brief History of 3GLs
• 1957 Fortran (punch cards)
• 1964 Basic  MS Visual Basic
• 1972 C (text colouring)  C++
• 1995 Java (Object Oriented)
• 2001 C# (OO, components)
• 2007 Scratch (Drag n Drop)
High Level Languages
(3GL)
Characteristics
• High Level Language
• Lots of Abstraction into easily
readable code
• Easy for humans to understand
• Quick to create code
• Needs Translating
into Machine code
HighLevel Languages
(4GL)
Lots of Abstraction
High Level Languages
(4GL)
Features
• Flow charts and
modules
• 4GL creates the
code for you
• Often for a
specific task e.g
Managing a tax
database
High Level Languages
(4GL)
Characteristics
• Examples: Ruby on Rails, Oracle, Powerbuilder
• High Level Language
• Lots of Abstraction sometimes
not even looking at code
• Very Quick to create code
• Needs Translating
into Machine code
“All 4GLs are designed to reduce programming effort,
the time it takes to develop software, and the cost of
software development. They are not always successful
in this task, sometimes resulting in inelegant and
unmaintainable code.” (wikipedia)
Comparison of Language Levels
1 GL
2 GL
3 GL
4 GL
Level
Low
Low
High
High
Example
Language(s)
Machine Code
Assembler
C, Java,
Scratch…
Oracle,
PowerBuilder…
Write in
Binary (1, 0)
Hexadecimal,
and Text
Text
Text, Diagrams
Abstraction
None
A little
Lots
Lots
Ease of Code
Creation
Very Difficult
Difficult
Easy
Very Easy
Speed of Code
Creation
Very slow
Slow
Fast
Very Fast
Control over
Machine Code
Full Precise
control
Portability
None
Full Precise
ChallengeSome
Question
control
control
Same family of
CPUs
Completely
Portable
No control 
Inelegant Code
Completely
Portable
Low and High Levels
Invention of High Level Languages (3GL)
High Level and Translators
- 1983 Educational Cartoon
BASIC
C
Java
Translating between
High and Low Level Languages
Compilers, and Interpreters
Translating (Compiling) Video
Youtube Video (Eating a Chocolate)
youtube.com/watch?v=cdsfjU8qUss
Translating between Levels
Why do we need to Translate high level
languages into low ones?
- Because Binary is the only language
the computer understands
- Creates precise code rather than abstract
- So code is portable
Translating between Levels
Interpreters and Compilers
on Planet Gooble De Gook
- Made in 1983
Two types of Translator
1) Compilers
Do the whole program at once at the end
Can save program down as an .exe file
2) Interpreters
Translate the whole program one line at a time
Can cause errors or refuse to run
User Interfaces
Heuristics
User Interface Video
Youtube Video (Box Crusher)
youtube.com/watch?v=cdsfjU8qUss
Mr Bell’s New Home Nightmare
Accidentally open Garage door
Mr Bell’s New Home Nightmare
Door bell is locked behind front door
User Interfaces
We measure the usability of a user interface through a
series of tests called “Heuristics”.
What is a User Interface?/ What is a User Interface’s
role?
- Communication between user and computer/machine
- Makes the program do what user wants it to
- Inputs like, Button, key, wheel, mouse, handle, Switch,
- Outputs like, lights, sound, speakers, visual, screen,
heat, display
- Manages/ Controls interactions
Heuristics (tests for User Interfaces)
1.
2.
3.
4.
5.
6.
7.
8.
9.
Visibility of system status
Match between system and the real world
User control and freedom
Consistency and standards
Error prevention
Recognition rather than recall
Flexibility and efficiency of use
Aesthetic and minimalist design
Help users recognize, diagnose, and recover from
errors
10. Help and documentation
Look these up online – Jakob Neilsen made them up.
User Interfaces
50 different things that have a user interface
Playstation, Door, Computer, Toaster, Phone, Drill, Bike,
Car, Clock, Gun, Printer, Office Chair, Distortion pedal,
Ipod, TV, Stereo, Projector, Websites, lightbulb, Scissors,
Pen, Power Plug, Window, Air Conditioning, Curtain,
Fridge, Stove, Watch, Jacket zip, car jack, shoe, toilet,
shower, cap, tap, tack, cat door, badge, earring, glasses,
Potato peeler, Cheese Grater, knitting needles, sewing
machine, watter bottle, knife, vhs, can opener, Milk
bottle, Towel, chop sticks, light, calculator, filing cabinet,
Microwave, elevator,
.
User Interfaces
Broadly Different Example User Interfaces
- Microwave, Computer, TV, Door, Switch, Playstation,
Scissors, Pen, Tissues, Toothpaste, phone, ipod, draw,
Lever, Shoes, stereo, socks, pants, plug, pin, clock,
projector, printer, Light bulb, toilet, sink, tap, shower,
bath, car, shovel, rifle, wrench, digger, back pack, fork,
remote control car, shopping trolley, DVD, book, pram,
finger nail clippers, curtains, some geeky thing, mouse,
bike pump, Hospital beds, jet pack, balloon, envelope,
aeroplane, boat, rubbish bin, umbrella, chocolate bar (in
wrapper) fishing rod, pizza box, kayak, kite, drink bottle,
map, bow and arrow, charger, calculator, website.
Download