HeapSort
Heap sort is a comparison based sorting technique based on Binary Heap data structure. It is similar to selection sort where we first find the maximum element and place the maximum element at the end. We repeat the same process for remaining element … More on Heap Sort
Question 1 
Which of the following sorting algorithms in its typical implementation gives best performance when applied on an array which is sorted or almost sorted (maximum 1 or two elements are misplaced).
Quick Sort  
Heap Sort  
Merge Sort  
Insertion Sort 
Discuss it
Question 1 Explanation:
Insertion sort takes linear time when input array is sorted or almost sorted (maximum 1 or 2 elements are misplaced).
All other sorting algorithms mentioned above will take more than lienear time in their typical implementation.
Question 2 
Given an unsorted array. The array has this property that every element in array is at most k distance from its position in sorted array where k is a positive integer smaller than size of array. Which sorting algorithm can be easily modified for sorting this array and what is the obtainable time complexity?
Insertion Sort with time complexity O(kn)  
Heap Sort with time complexity O(nLogk)  
Quick Sort with time complexity O(kLogk)  
Merge Sort with time complexity O(kLogk) 
Discuss it
Question 2 Explanation:
See http://www.geeksforgeeks.org/nearlysortedalgorithm/ for explanation and implementation.
Question 3 
Which of the following is not true about comparison based sorting algorithms?
The minimum possible time complexity of a comparison based sorting algorithm is O(nLogn) for a random input array  
Any comparison based sorting algorithm can be made stable by using position as a criteria when two elements are compared  
Counting Sort is not a comparison based sorting algortihm  
Heap Sort is not a comparison based sorting algorithm. 
Discuss it
Question 3 Explanation:
See http://www.geeksforgeeks.org/lowerboundoncomparisonbasedsortingalgorithms/ for point A. See http://www.geeksforgeeks.org/stabilityinsortingalgorithms/ for B. C is true, count sort is an Integer Sorting algorithm.
Question 4 
Suppose we are sorting an array of eight integers using heapsort, and we have just finished some heapify (either maxheapify or minheapify) operations. The array now looks like this:
16 14 15 10 12 27 28
How many heapify operations have been performed on root of heap?
1  
2  
3 or 4  
5 or 6 
Discuss it
Question 4 Explanation:
In Heapsort, we first build a heap, then we do following operations till the heap size becomes 1.
a) Swap the root with last element
b) Call heapify for root
c) reduce the heap size by 1.
In this question, it is given that heapify has been called few times and we see that last two elements in given array are the 2 maximum elements in array. So situation is clear, it is maxheapify whic has been called 2 times.
Question 5 
You have to sort 1 GB of data with only 100 MB of available main memory. Which sorting technique will be most appropriate?
Heap sort  
Merge sort  
Quick sort  
Insertion sort 
Discuss it
Question 5 Explanation:
The data can be sorted using external sorting which uses merging technique. This can be done as follows:
1. Divide the data into 10 groups each of size 100.
2. Sort each group and write them to disk.
3. Load 10 items from each group into main memory.
4. Output the smallest item from the main memory to disk. Load the next item from the group whose item was chosen.
5. Loop step #4 until all items are not outputted.
The step 35 is called as merging technique.
Question 6 
Which sorting algorithms is most efficient to sort string consisting of ASCII characters?
Quick sort  
Heap sort  
Merge sort  
Counting sort 
Discuss it
Question 6 Explanation:
Counting sort algorithm is efficient when range of data to be sorted is fixed. In the above question, the range is from 0 to 255(ASCII range). Counting sort uses an extra constant space proportional to range of data.
Question 7 
The number of elements that can be sorted in time using heap sort is
(A) (B) (C) (d)
A  
B  
C  
D 
Discuss it
Question 7 Explanation:
Time complexity of Heap Sort is [Tex]\Theta(mLogm)[/Tex] for m input elements. For m = [Tex]\Theta(Log n/(Log Log n))[/Tex], the value of [Tex]\Theta(m * Logm)[/Tex] will be [Tex]\Theta( [Log n/(Log Log n)] * [Log (Log n/(Log Log n))] )[/Tex] which will be [Tex]\Theta( [Log n/(Log Log n)] * [ Log Log n  Log Log Log n] )[/Tex] which is [Tex]\Theta(Log n)[/Tex]
Question 8 
Which of the following is true about merge sort?
Merge Sort works better than quick sort if data is accessed from slow sequential memory.  
Merge Sort is stable sort by nature  
Merge sort outperforms heap sort in most of the practical situations.  
All of the above. 
Discuss it
Question 8 Explanation:
See Merge Sort and this.
Question 9 
Consider a binary min heap containing n elements and every node is having degree 2 ( i.e. full binary min heap tree). What is the probability of finding the largest element at the last level ?
1/2  
1  
1/n  
1/2^n

Discuss it
Question 9 Explanation:
Always 1 as maximum element will always be present in the leaf nodes in case of binary min heap.
There are 9 questions to complete.
Coding practice for sorting.