考虑在k个堆栈中均匀分布的n个元素。在每个堆栈中,其元素按升序排列(min在每个堆栈的顶部,然后向下递增)。
给定一个大小为n的队列,我们必须将所有n个元素按升序排列。最著名的算法的时间复杂度是多少?
(A) O(n logk)
(B) O(nk)
(C) O(n 2 )
(D) O(k 2 )答案: (A)
解释:
在nlogk中,可以通过创建大小为k的最小堆并添加所有堆栈的所有顶层元素来完成。提取最小值后,从堆栈中添加下一个元素,从中我们得到第一个最小值。
时间复杂度= O(k)(用于创建大小为k的堆)+(nk)log k(插入到堆中)。
这个问题的测验