Give an O(n lg k)-time algorithm to merge k sorted lists into one sorted list,
where n is the total number of elements in all the input lists. (Hint: Use a minheapfor k-way merging.)
Solution
1. For each sorted list, maintain a 0 initilized array of k elements each representing the index of the current element to be dealt.
2. Build a k-element max heap, the elements are from the cur head of the k sorted list.
3. Each time, get the max from the heap, (lg k) and insert a new element from which the max of the heap is from before the delete.(lg k ) These two steps can be combined to consume only a single lg k, instead of a double lg k -> Record the max, replace the max with the new element, and then let it sink downward.
If all elements from a certain array has dealt, use minux INT_MAX as
4. Put the max at the final array of element N.
5. repeat 3 and 4, until the number of dealt elements is N.
From: http://blog.csdn.net/cheetach119/article/details/9353035