reaching wider summer school

42
Day 2 – Logic and Algorithms REACHING WIDER SUMMER SCHOOL

Upload: barid

Post on 22-Feb-2016

23 views

Category:

Documents


0 download

DESCRIPTION

Reaching Wider Summer School. Day 2 – Logic and Algorithms. Algorithms. What are algorithms A set of step by step instructions To solve a problem Written in easy to understand language – not strictly controlled Like a recipe in cooking Algorithm efficiency can be measured…improved? - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Reaching Wider Summer School

Day 2 – Logic and Algorithms

REACHING WIDER SUMMER SCHOOL

Page 2: Reaching Wider Summer School

ALGORITHMS• What are algorithms

• A set of step by step instructions

• To solve a problem

• Written in easy to understand language – not strictly controlled

• Like a recipe in cooking

• Algorithm efficiency can be measured…improved?

• Algorithms are not programs

Page 3: Reaching Wider Summer School

LETS GIVE THIS A GO• How do you make a cup of tea?

Page 4: Reaching Wider Summer School

HOW DID WE DO• Did we miss anything?

• Is anything unclear?

• How efficient are we?

• Can we do better?

Page 5: Reaching Wider Summer School

PSEUDO CODE• More refined use of natural language

• Still user defined

• Often includes programming language like statements

• If this and this then

do that

End;

• Less ambiguous that natural language

• “Time flies like an arrow, fruit flies like a banana”

Page 6: Reaching Wider Summer School

BACK TO MY CUP OF TEA• Lets try and refine this a little more.

• Still a large step away from a program

Page 7: Reaching Wider Summer School

WHY WRITE ALGORITHMS• Aren’t they time consuming?

• Could we just use this time programming

• Programming prone to errors

• Algorithms help us design our program

• Avoid mistakes in our program – BUGS!

• Can be analysed, compared, and improved without costly implementation

Page 8: Reaching Wider Summer School

POSSIBLY MORE USEFUL• Lets try something a little more programming orientated

• Reading a text file containing a list of text

Page 9: Reaching Wider Summer School

DID WE GET IT?• Get file name

• Open file

• while(reading a line != end of file)

• Store string from line to memory

• Close the file – Important!

Alternative

• Get file name

• Open file

• until(reading a line = end of file) do

• Store string from line to memory

• Close the file – Important!

Page 10: Reaching Wider Summer School

CODE EXAMPLES• Java:

BufferedReader in = new BufferedReader(new FileReader("infilename"));

String str;

while ((str = in.readLine()) != null)

{

process(str);

}

in.close();

• “process(str)” is a mathod that takes a String input parameter

Page 11: Reaching Wider Summer School

CODE EXAMPLES• C –

FILE *fp; char str[128];

if((fp = fopen(argv[ 1 ], "r"))==NULL) { printf("Cannot open file.\n"); exit(1); }

while(!feof(fp)) { if(fgets(str, 126, fp)) printf("%s", str); }

fclose(fp);

return 0;

Page 12: Reaching Wider Summer School

ALGORITHMS• Not restricted to any one language

• Can (should) be readable by anyone with experience in any programming langauge.

• In fact readable by anyone at all

• Crucial for the design of good quality code

Page 13: Reaching Wider Summer School

SORTING!• Sorting another classical problem in computer science

• Many, many different algorithms developed

• http://en.wikipedia.org/wiki/Sorting_algorithm Lists a lot of examples.

• Today we’re going to look at “Bubble sorting”

Page 14: Reaching Wider Summer School

WHY SORT?• Already seen that a sorted list can be searched must faster than an unsorted list

• Sort once. Improves search always.

• Adding an element to a sorted list is possible

• Insertion short

Page 15: Reaching Wider Summer School

BUBBLE SORT Pretty strange name So called because the smaller values “bubble” up to the top of this list.

Slow – only practically used for very small sets of data

Page 16: Reaching Wider Summer School

LETS TAKE A LOOK AT THE ALGORITHM• Sorted = false;

• While sorted = false;

• Sorted = true;

• For all elements n in a list

• If n > n +1

• Swap

• Sorted = false;

• N = n +1;

Page 17: Reaching Wider Summer School

DEMONSTRATION• https://cs.senecac.on.ca/~catherine.leung/sketches/bubble.html

Page 18: Reaching Wider Summer School

WHY IS IT SLOW•

Page 19: Reaching Wider Summer School

PRACTICALITY• How do we do the swap?

• Array[i] = Array[i+1];

• Array[i+1] = Array[i];

• That wont work, we’re overwriting Array[i+1] before assigning its value to Array[i].

• So what do we do.

Page 20: Reaching Wider Summer School

PRACTICALITY• Simples

• We can use a local variable

• int tmp;

• tmp = Array[i];

• Array[i] = Array[i+1];

• Array[i+1] = tmp;

• Now value of Array[i] is stored before being overwritten.

Page 21: Reaching Wider Summer School

HOW CAN WE DO BETTER? Example Merge sort Example of a recursive algorithm

An algorithm that calls itself

Let me explain

Page 22: Reaching Wider Summer School

ALGORITHM• mergeSort( input:Array)

• If (Array.length > 1)

• arrayFirst = Array[0..n/2]

• arraySecond = Array[n/2+1 ..n]

• mergeSort(arrayFirst);

• mergeSort(arraySecond);

• Combine arrayFirst with arraySecond

• With elements in order

Page 23: Reaching Wider Summer School

ALGORITHM• mergeSort( input:Array)

• If (Array.length > 1)

• arrayFirst = Array[0..n/2]

• arraySecond = Array[n/2+1 ..n]

• mergeSort(arrayFirst);

• mergeSort(arraySecond);

• Combine arrayFirst with arraySecond

• With elements in orderRecursive Calls

Page 24: Reaching Wider Summer School

DEMONSTRATION5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

Page 25: Reaching Wider Summer School

DEMONSTRATION5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 2 8

Now merge each list in the right order

1 6

Page 26: Reaching Wider Summer School

DEMONSTRATION5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 2 8

Now merge each list in the right order

1 6

3

Page 27: Reaching Wider Summer School

DEMONSTRATION5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 2 8

Now merge each list in the right order

1 6

3 5

Page 28: Reaching Wider Summer School

DEMONSTRATION5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 2 8

Now merge each list in the right order

1 6

3 5 7

Page 29: Reaching Wider Summer School

DEMONSTRATION5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 2 8

Now merge each list in the right order

1 6

3 5 7 9

Page 30: Reaching Wider Summer School

DEMONSTRATION5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 2 8

Now merge each list in the right order

1 6

3 5 7 9 1

Page 31: Reaching Wider Summer School

DEMONSTRATION5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 2 8

Now merge each list in the right order

1 6

3 5 7 9 1 2

Page 32: Reaching Wider Summer School

DEMONSTRATION5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 2 8

Now merge each list in the right order

1 6

3 5 7 9 1 2 6

Page 33: Reaching Wider Summer School

DEMONSTRATION5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 2 8

Now merge each list in the right order

1 6

3 5 7 9 1 2 6 8

Page 34: Reaching Wider Summer School

DEMONSTRATION5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 2 8

Now merge each list in the right order

1 6

3 5 7 9 1 2 6 8

1

Page 35: Reaching Wider Summer School

DEMONSTRATION5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 2 8

Now merge each list in the right order

1 6

3 5 7 9 1 2 6 8

1 2

Page 36: Reaching Wider Summer School

DEMONSTRATION5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 2 8

Now merge each list in the right order

1 6

3 5 7 9 1 2 6 8

1 2 3

Page 37: Reaching Wider Summer School

DEMONSTRATION5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 2 8

Now merge each list in the right order

1 6

3 5 7 9 1 2 6 8

1 2 3 5

Page 38: Reaching Wider Summer School

DEMONSTRATION5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 2 8

Now merge each list in the right order

1 6

3 5 7 9 1 2 6 8

1 2 3 5 6

Page 39: Reaching Wider Summer School

DEMONSTRATION5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 2 8

Now merge each list in the right order

1 6

3 5 7 9 1 2 6 8

1 2 3 5 6 7

Page 40: Reaching Wider Summer School

DEMONSTRATION5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 2 8

Now merge each list in the right order

1 6

3 5 7 9 1 2 6 8

1 2 3 5 6 7 8

Page 41: Reaching Wider Summer School

DEMONSTRATION5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 8 2 6 1

5 9 3 7 2 8

Now merge each list in the right order

1 6

3 5 7 9 1 2 6 8

1 2 3 5 6 7 8 9

Sorted!

Page 42: Reaching Wider Summer School

FASTER THAN BUBBLE SORT?• Yes

• Sorting each recurrence takes 2*n/2+n time of the level above.

• Worst case O(n log n)

• Requires more memory than bubble sort