Lecture 12 Ticket
Complete by the beginning of class on 09/28
Download this ticket in pdf format or .tex source.
In class we saw the “Master Theorem” for solving recurrences:
Master Theorem. Suppose the running time \(T(n)\) of a (recursively defined) method satisfies \(T(n) = a T(n / b) + f(n)\). Define \(c = \log_b a\). Then:
- If \(f(n) = O(n^d)\) for \(d < c\) then \(T(n) = O(n^c)\)
- If \(f(n) = \Theta(n^c \log^k n)\) then \(T(n) = O(n^c \log^{k+1} n)\)
- If \(f(n) = \Omega(n^d)\) for \(d > c\), then \(T(n) = O(f(n))\)
For the following methods, apply the Master Theorem to derive a bound on the running time of the method. In particular, for each method you should compute the values \(a, b, c,\) and the function \(f\) to determine which (if any) of the three conditions above apply. In both cases, the size \(n\) of the input is \(n = j - i\).
-
Binary Search.
1 2 3 4 5 6 7 8 9
BinarySearch(a, val, i, j): if j = i then return false if j - i = 1 then return a[i] = val m <- (j + i) / 2 if a[m] > val then return BinarySearch(a, val, i, m) else return BinarySearch(a, val, m, j) endif
-
Merge Sort. Assume that the
Merge
procedure runs in time \(O(n)\).1 2 3 4 5 6 7 8
MergeSort(a, i, j): if j - i = 1 then return endif m <- (i + j) / 2 MergeSort(a,i,m) MergeSort(a,m,j) Merge(a,i,m,j)