Lecture 12 Ticket Solution
An example solution
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)
Solution

For the
\[\begin{align*} a &= 1\\ b &= 2\\ c &= \log_2 1 = 0\\ f(n) &= O(1) = O(n^0) = O(n^c). \end{align*}\]BinarySearch
method, a call of size \(n = j  i\) makes a single recursive call toBinarySearch
at either line 6 or line 8. The size of the recursive call is \(n/2\). All other operations take time \(O(1)\), using the notation of the Master Theorem, we haveTherefore, we fall into case 2 of the theorem, so the running time is \(T(n) = O(n^0 \log n) = O(\log n)\).

For
\[\begin{align*} a &= 2\\ b &= 2\\ c &= \log_2 2 = 1\\ f(n) &= O(n) = O(n^c). \end{align*}\]MergeSort
, a call of size \(n = j  i\) makes two recursive calls toMergeSort
, each of size \(n/2\) (in lies 6 and 7). All operations take time \(O(1)\), except the call toMerge
, which is assumed to take time \(O(n)\). Thus, in the notation of the Master Theorem we haveThese parameters again put us in case 2 of the Master Theorem. Applying this case we get \(T(n) = O(n^c \log n) = O(n \log n)\).