Exercise 1.2-2
💽

Exercise 1.2-2

 
Suppose that for inputs of size n on a particular computer, insertion sort runs in steps and merge sort runs in steps. For which values of n does insertion sort beat merge sort?
 
💡
We could interpret the question as at what value will the runtime of merge sort start becoming lower than insertion sort
 
 
 
 
where
 
This can not be solved algebraically. Possible methods are:
  1. Trial and error, taking a guess and solving till a final solution is reached.
but too difference is too large
We could play with , reducing by a margin of till we get to an approximate value
when
margin still high
when
margin a bit close
when
,
So, is best suited at ; playing with n still but increasing from 40 by 2
when
when
 
So, when n is approximately , merge sort starts becoming faster than insertion sort
 
We could reduce further starting from , using a margin of
;
to get a closer range that tells exactly when the value of n starts becoming significant.
when
but the difference is close
From here on ward the fraction gets uglier.
We could settle for
 
  1. Using Newton Raphson iteration method
 
Solving numerically:
Newton Method =
We would solve this with a python code instead of solving it here manually.
We take to be 8, and a tolerance of
import math # Define the function and its derivative def f(n): return 2**(n/8) - n def df(n): return (1/8) * math.log(2) * 2**(n/8) # Initial guess n_guess = 8 # Tolerance for convergence tolerance = 1e-6 # Maximum number of iterations max_iter = 1000 # Iterative approximation for i in range(max_iter): fn = f(n_guess) if abs(fn) < tolerance: print("Solution found: n =", n_guess) break else: # Newton's method: x_{n+1} = x_n - f(x_n) / f'(x_n) n_guess = n_guess - fn / df(n_guess) else: print("Maximum iterations reached. No solution found.")
The result is:
Solution found: n = 43.559260335587204
PS: We did a good job with the manual approach, we just did not get to a precise solution.
 
  1. Using graphs
We could plot two lines on same graph a: b: And use the intersection point to determine the solution.
https://www.desmos.com/calculator/hefxbzrjhg