The Gateway to Computer Science Excellence
First time here? Checkout the FAQ!
x
+27 votes
2.1k views

The unusual $\Theta(n^2)$ implementation of Insertion Sort to sort an array uses linear search to identify the position where an element is to be inserted into the already sorted part of the array. If, instead, we use binary search to identify the position, the worst case running time will

  1. remain $\Theta(n^2)$
  2. become $\Theta(n  (\log n)^2)$
  3. become $\Theta(n \log n)$
  4. become $\Theta(n)$
asked in Algorithms by Veteran (69k points)
edited by | 2.1k views
now for the best case, it will take O(N log N) time.
For best case...

searching takes logN and swap takes 1  , so total (logN + 1) becomes 1 , and for n elements  it becomes N (1) . so total for best case it becomes N.

correct me if i am wrong ?
best case input for insertion sort is a sorted array (already) hence we do only the find the place of the cureent element we are looking at in the sorted part of the array  we dont need to do swaps so it will be n*logn for n elements

2 Answers

+37 votes
Best answer

In insertion sort, with linear search, it takes

(worst case) $n$ comparisons for searching the right position, and $n$ swaps to make room to place the element.

Hence for n elements, a total of $n\times(n+n)$; $n$ for search and $n$ for swaps.

$= \Theta (2n^2) = \Theta (n^2)$

If we replace it with binary search, it takes

(worst case) $\log n$ comparisons for searching the right position, and $n$ swaps to make room to place the element.

Hence for n elements, a total of $n\times(\log n+n)$; $n$ for search and $n$ for swaps.

$= \Theta (n \times \log n + n^2) = \Theta (n^2)$

Hence answer is A

answered by Loyal (3.6k points)
edited by
I think this explanation is correct and more clearer
replace with swap with word shifting
why you have take it for n elements. there is nothing specified for number of elements. please explain.
@arjun sir please help me in this
Then what do you think 'n' stands for in the given question?

@ryan sequeira You mean for every element in the array we need to do max. n comparisons to search for the right position?

But if you see the code for each iteration, max no. of comparisons that can occur in an iteration will be from j to 1 where j=(i-1) so i.e. i-1-1+1=i-1 where i∈[2,n].

InsertionSort(arr,n)
{
   for i=2 to n
   {
       key = arr[i]
       j = i-1
       while (j > 0 && arr[j] > key) // will run from j=(i-1) to max. j=1
       {
           arr[j+1] = arr[j]
           j = j-1
       }
       arr[j+1] = key
   }
}

So what I mean to say is no. of comparisons is not n for all elements and neither do the no. of swaps. It depends on the element's position in the array. Isn't it so? Correct me if it is wrong.

The answer is still the same though.

+19 votes

A. Complexity remains same.θ(n2)

To place the element x in the correct position first we are finding its correct position in the sorted array using binary search but we have to make the space for it by shifting all elements to the right, which in worst case may be equal to the size of the sorted array.

 

 

answered by Veteran (14.1k points)
Answer:

Related questions



Quick search syntax
tags tag:apple
author user:martin
title title:apple
content content:apple
exclude -tag:apple
force match +apple
views views:100
score score:10
answers answers:2
is accepted isaccepted:true
is closed isclosed:true

33,705 questions
40,253 answers
114,347 comments
38,862 users