Computer Science 101 A Survey of Computer Science Efficiency of Divide and Conquer
Background - Logarithms (Base 2) Definition. The logarithm to base 2 of n is that number k such that 2k=n. Example: 25=32 so Lg(32)=5. Another way to think of this is that Lg(n) is the number of times we must divide n by 2 until we get 1. Note: Lg(n) is usually a fraction, but the closest integer will work for us.
Base 2 Logarithms - Table n Lg(n) n Lg(n) 1 0 1024 10 2 1 2048 11 4 2 4096 12 8 3 8192 13 16 4 1,048,576 20 32 5 64 6 128 7 256 8 512 9
Quicksort - Rough Analysis For simplification, assume that we always get even splits when we partition. When we partition the entire list, each element is compared with the pivot - approximately n comparisons.
Quicksort - Rough Analysis (cont.) Each of the “halves” is partitioned, each taking about n/2 comparisons, thus about n more comparisons. Each of the “fourths” is partitioned,each taking about n/4 comparisons - n more.
Quicksort - Rough Analysis (cont.) How many “levels” of “about n comparisons” do we get? Roughly, we keep splitting until the pieces are about size 1.
Quicksort - Rough Analysis (cont.) How many times must we divide n by 2 before we get 1? Lg(n) times, of course. Thus Comparisons n Lg(n) Quicksort is O(n Lg(n)) and T(n) KnLg(n) (Linearithmic)
Growth rates
Binary Search Algorithm Note: For searching sorted list Given: n, N1,N2,…Nn (sorted) and target T Want: Position where T is located or message indicating that T is not in list
Binary Search - The algorithm Set Found to false Set B to 1 Set E to n While not Found and B ≤ E Set M to (B+E)/2 (whole part) If N(M)=T then Print M Set Found to true else If T<NM then Set E to M-1 else Set B to M+1 end-of-loop If not Found then Print “Target not in list”
Binary Search Example 4 8 20 26 31 39 40 42 50 63 70 Target 50 85 4 8 E=n 85 4 8 20 26 31 39 40 42 50 63 70 M=(B+E)/2 85 4 8 20 26 31 39 40 42 50 63 70 T>NM B=M+1 85 40 42 50 63 70 M=(B+E)/2 85 Output location 9
Binary Search Example 4 8 20 26 31 39 40 42 50 63 70 Target 31 85 4 8 B=1,E=n 85 4 8 20 26 31 39 40 42 50 63 70 M=(B+E)/2 85 39 40 42 50 63 70 4 8 20 26 31 T<NM E=M-1 85 4 8 20 26 31 M=(B+E)/2 4 8 20 26 31 T>NM B=M+1
Binary Search Example (cont.) 26 31 M=(B+E)/2 26 31 T>NM B=M+1 31 M=(B+E)/2 Output location 5
Efficiency - Binary Search Note with 1000 elements, Sequential Search would have a worst case number of comparisons of 1000. After 1 comparison, Binary Search would be left with at most 500 elements. After 2 comparisons 250 at worst After 3 comparisons 125 at worst After 4 comparisons 62 at worst After 5 comparisons 31 at worst After 6 comparisons 15 at worst After 7 comparisons 7 at worst After 8 comparisons 3 at worst After 9 comparisons 1 at worst
Efficiency - Binary Search (cont) Each time we make a comparison, we cut the list in half. How many times must we do this to end up with 1 element? Lg(n), of course. Binary search is O(Lg(n)) T(n) K Lg(n)
Growth rates
If it takes that long for 100, we'll dang well be here all night!