({{Template:Author|Arjun Suresh|{{arjunweb}} }})
 
(8 intermediate revisions by the same user not shown)
Line 1: Line 1:
Suppose there are $\logn$ sorted lists of $\frac{n}{\log n}$ elements each. The time complexity of producing a sorted list of all these elements is: (Hint:Use a heap data structure)
+
Suppose there are $\log n$ sorted lists of $\frac{n}{\log n}$ elements each. The time complexity of producing a sorted list of all these elements is: (Hint:Use a heap data structure)
  
'''(A) $O(n\log\logn)$'''
+
'''(A) $O(n\log \log n)$'''
 
   
 
   
(B) $ \Theta(n\logn)$
+
(B) $ \Theta(n\log n)$
 
   
 
   
(C) $\Omega(n\logn)$
+
(C) $\Omega(n\log n)$
 
   
 
   
(D) $(n^{\frac{3}{2}})$
+
(D) $\Omega(n^{\frac{3}{2}})$
 
   
 
   
  
 
==={{Template:Author|Arjun Suresh|{{arjunweb}} }}===
 
==={{Template:Author|Arjun Suresh|{{arjunweb}} }}===
Since we have $\log n$ lists we can make a min-heap of $\log n$ elements by taking the first element from each of the $\log n$ sorted lists. Now, we start deleting the min-element from the heap and put the next element from the sorted list from which that element came in the heap. (This identity can be done by making a structure of two values, one for the number and one for identifying the origin sorted list of that number and storing this structure in the heap). In this way each delete and the corresponding insert will take $O(\log\log n)$ time as delete in heap is $O(1)$ and inserting an element on a heap of size $n$ is $O(\log n)$. (here, heap size is $\log n$). Now, we have a total of $\log n \times \frac{n}{\log n} = n$ elements. So, total time will be $O(n \log\log n)$.
+
Since we have $\log n$ lists we can make a min-heap of $\log n$ elements by taking the first element from each of the $\log n$ sorted lists. Now, we start deleting the min-element from the heap and put the next element from the sorted list from which that element was added to the heap. (This identity can be done by making a structure of two values, one for the number and one for identifying the origin sorted list of that number and storing this structure in the heap). In this way each delete and the corresponding insert will take $O(\log\log n)$ time as delete and insert operations in heap is $O(\log n)$ for $n$ elements (here, heap size is $\log n$). Now, we have a total of $\log n \times \frac{n}{\log n} = n$ elements. So, total time will be $O(n \log\log n)$.
  
  
Line 18: Line 18:
 
[[Category:Algorithms & Data Structures Questions from GATE]]
 
[[Category:Algorithms & Data Structures Questions from GATE]]
 
[[Category:GATE2005]]
 
[[Category:GATE2005]]
[[Category:Algorithms questions]]
 

Latest revision as of 14:29, 6 September 2015

Suppose there are $\log n$ sorted lists of $\frac{n}{\log n}$ elements each. The time complexity of producing a sorted list of all these elements is: (Hint:Use a heap data structure)

(A) $O(n\log \log n)$

(B) $ \Theta(n\log n)$

(C) $\Omega(n\log n)$

(D) $\Omega(n^{\frac{3}{2}})$


Solution by Arjun Suresh

Since we have $\log n$ lists we can make a min-heap of $\log n$ elements by taking the first element from each of the $\log n$ sorted lists. Now, we start deleting the min-element from the heap and put the next element from the sorted list from which that element was added to the heap. (This identity can be done by making a structure of two values, one for the number and one for identifying the origin sorted list of that number and storing this structure in the heap). In this way each delete and the corresponding insert will take $O(\log\log n)$ time as delete and insert operations in heap is $O(\log n)$ for $n$ elements (here, heap size is $\log n$). Now, we have a total of $\log n \times \frac{n}{\log n} = n$ elements. So, total time will be $O(n \log\log n)$.




blog comments powered by Disqus

Suppose there are $\logn$ sorted lists of $\frac{n}{\log n}$ elements each. The time complexity of producing a sorted list of all these elements is: (Hint:Use a heap data structure)

(A) $O(n\log\logn)$

(B) $ \Theta(n\logn)$

(C) $\Omega(n\logn)$

(D) $(n^{\frac{3}{2}})$


Solution by Arjun Suresh[edit]

Since we have $\log n$ lists we can make a min-heap of $\log n$ elements by taking the first element from each of the $\log n$ sorted lists. Now, we start deleting the min-element from the heap and put the next element from the sorted list from which that element came in the heap. (This identity can be done by making a structure of two values, one for the number and one for identifying the origin sorted list of that number and storing this structure in the heap). In this way each delete and the corresponding insert will take $O(\log\log n)$ time as delete in heap is $O(1)$ and inserting an element on a heap of size $n$ is $O(\log n)$. (here, heap size is $\log n$). Now, we have a total of $\log n \times \frac{n}{\log n} = n$ elements. So, total time will be $O(n \log\log n)$.




blog comments powered by Disqus