Efficiency of Algorithms February 19th. Today Binary search –Algorithm and analysis Order-of-magnitude analysis of algorithm efficiency –Review Sorting.
Published byModified over 4 years ago
Presentation on theme: "Efficiency of Algorithms February 19th. Today Binary search –Algorithm and analysis Order-of-magnitude analysis of algorithm efficiency –Review Sorting."— Presentation transcript:
Today Binary search –Algorithm and analysis Order-of-magnitude analysis of algorithm efficiency –Review Sorting –Selection sort
Searching a sorted list Problem: find a target in a sorted list –How can we exploit that the list is sorted, and come up with an algorithm faster than sequential search in the worst case? –How do we search in a phone book? –Can we come up with an algorithm? Check the middle value If smaller than target, go right Otherwise go left
Binary search Get values for list, A1, A2, ….An, n, target Set start =1, set end = n Set found = NO Repeat until ?? –Set m = middle value between start and end –If target = m then Print target found at position m Set found = YES –Else if target < Am then end = m-1 Else start = m+1 If found = NO then print “Not found” End
Efficiency of binary search What is the best case? What is the worst case? –Initially the size of the list in n –After the first iteration through the repeat loop, if not found, then either start = m or end = m ==> size of the list on which we search is n/2 –Every time in the repeat loop the size of the list is halved: n, n/2, n/4,…. –How many times can a number be halved before it reaches 1?
Orders of magnitude Order of magnitude ( lg n) –Worst-case efficiency of binary search: ( lg n) Comparing order of magnitudes (1) << (lg n) << (n) << (n 2 )
Sorting Problem: sort a list of items into alphabetical or numerical order Why sorting? –Sorting is ubiquitous (very common)!! –Examples: Registrar: Sort students by name or by id or by department Post Office: Sort mail by address Bank: Sort transactions by time or customer name or accound number … For simplicity, assume input is a list of n numbers Ideas for sorting?
Selection Sort Idea: grow a sorted subsection of the list from the back to the front 5 7 2 1 6 4 8 3 | 5 7 2 1 6 4 3 | 8 5 2 1 6 4 3 | 7 8 5 2 1 3 4 | 6 7 8 … |1 2 3 4 5 6 7 8
Selection Sort Pseudocode (at a high level of abstraction) –Get values for n and the list of n items –Set marker for the unsorted section at the end of the list –Repeat until unsorted section is empty Select the largest number in the unsorted section of the list Exchange this number with the last number in unsorted section of list Move the marker of the unsorted section forward one position –End
Selection Sort Level of abstraction –It is easier to start thinking of a problem at a high level of abstraction Algorithms as building blocks –We can build an algorithm from “parts” consisting of previous algorithms –Selection sort: Select largest number in the unsorted section of the list We have seen an algorithm to do this last time Exchange 2 values
Selection Sort Analysis Iteration 1: –Find largest value in a list of n numbers : n-1 comparisons –Exchange values and move marker Iteration 2: –Find largest value in a list of n-1 numbers: n-2 comparisons –Exchange values and move marker Iteration 3: –Find largest value in a list of n-2 numbers: n-3 comparisons –Exchange values and move marker … Iteration n: –Find largest value in a list of 1 numbers: 0 comparisons –Exchange values and move marker Total: (n-1) + (n-2) + …. + 2 + 1
Selection Sort Total work (nb of comparisons): –(n-1) + (n-2) + …. + 2 + 1 –This sum is equal to.5n 2 -.5n (proved by Gauss) => order of magnitude is ( ? ) Questions –best-case, worst-case ? –we ignored constants, and counted only comparisons.. Does this make a difference? Space efficiency –extra space ?
Selection Sort In conclusion: Selection sort –Space efficiency: No extra space used (except for a few variables) –Time efficiency There is no best-case and worst-case the amount of work is the same: (n 2 ) irrespective of the input Other sorting algorithms? Can we find more efficient sorting algorithms?
This week… Wednesday: Lab 3 Thursday: Exam 1 Material: Algorithms Chapter 1, 2 & 3 from textbook For next time –Review chapter 1,2 & 3 –Look over practice exam