I tried this problem from CLRS (Page 39, 2.3-4)
We can express insertion sort as a recursive procedure as follows. In order to sort
A[1... n]
, we recursively sortA[1... n-1]
and then insertA[n]
into the sorted arrayA[1... n-1]
. Write a recurrence for the running time of this recursive version of insertion sort.
The recurrence I formed was
$$ T(n) = \begin{cases}\Theta(1) & \textrm{if } n = 1,\\ T(n-1) + \Theta(n) & \textrm{if } n > 1. \end{cases} $$
My reasoning
- the base case of $n = 1$ the list is sorted so there is no work hence constant time.
- For all other cases the time depends on sorting the sequence
A[1...n-1]
and then insertion into that sequence. Hence it should be their sum, i.e., $T(n-1) + \Theta(n)$.
I wanted to know whether the recurrence relation is correct. If not what are the mistakes and how to correctly formulate a recurrence relation?
-
1$\begingroup$ You may be interested in our reference questions. In particular, the notion of "runtime" is fuzzy, the recurrence with $\Theta$-terms is not the nicest way of putting things and several kinds of solving recurrences have been discussed. Note that "yes-no"-questions are generally undesired here. (I note that the question is old; leaving the comment for reference.) $\endgroup$Raphael– Raphael2014年09月15日 10:52:03 +00:00Commented Sep 15, 2014 at 10:52
1 Answer 1
According to the description you provided the recurrence is correct.
you might think it should be
T(n)=\begin{Bmatrix}
1 & ,\ n=1\\
T(n-1)\ +\ \Theta(log\ n) & ,\ otherwise
\end{Bmatrix}
because you can find the insertion place by using Binary-Search, however in order to actually insert the element you'll have to move away all the elements in the worst case.
-
$\begingroup$ Searching linearly takes
O(n)
and by doing binary search it isO(log n)
. But isn't the worst-case the movement of all the elements which should takeO(n)
hence making the overall complexityO(n)
? So why is the term inn != 1
isO(log n)
instead of beingO(n)
? $\endgroup$Aseem Bansal– Aseem Bansal2013年07月09日 15:10:55 +00:00Commented Jul 9, 2013 at 15:10 -
2$\begingroup$ you're right, that is exactly what i said. the above formula is wrong exactly because the movement of the elements takes O(n) $\endgroup$hcf– hcf2013年07月09日 15:18:14 +00:00Commented Jul 9, 2013 at 15:18
-
$\begingroup$ I should be reading more carefully. Thanks for answering. $\endgroup$Aseem Bansal– Aseem Bansal2013年07月09日 15:22:02 +00:00Commented Jul 9, 2013 at 15:22
Explore related questions
See similar questions with these tags.