reaching wider summer school
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 PresentationTRANSCRIPT
![Page 1: Reaching Wider Summer School](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/1.jpg)
Day 2 – Logic and Algorithms
REACHING WIDER SUMMER SCHOOL
![Page 2: Reaching Wider Summer School](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/3.jpg)
LETS GIVE THIS A GO• How do you make a cup of tea?
![Page 4: Reaching Wider Summer School](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/17.jpg)
DEMONSTRATION• https://cs.senecac.on.ca/~catherine.leung/sketches/bubble.html
![Page 18: Reaching Wider Summer School](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/18.jpg)
WHY IS IT SLOW•
![Page 19: Reaching Wider Summer School](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/24.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/25.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/26.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/27.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/28.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/29.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/30.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/31.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/32.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/33.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/34.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/35.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/36.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/37.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/38.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/39.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/40.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/41.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062501/56816150550346895dd0d9d0/html5/thumbnails/42.jpg)
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