算法:如何用空间约束对矩阵元素进行排序

时间:2015-06-05 21:10:47

标签: arrays algorithm sorting

我试图了解根据给定的约束来解决这个问题的最佳方法。我们有一个数字矩阵,每行都有一个排序。我们的结果应该按排序顺序列出所有这些元素。

示例:

Input:  
20  40  80  
5   60  90  
45  50  55     
output:
5 20 40 45 50 55 60 80 90

约束:您一次只能容纳1行 可能的解决方案:
1)使用数组,将所有元素放在数组中并对它们进行排序 - > o(n)数组空间和o(n log n)排序时间。但是这使用了额外的内存,因此约束实际上没有得到满足。

2)使用优先级队列。将所有元素放在优先级队列中并删除以按排序顺序获取元素。这再次使用o(n)空间,但我们有更好的时间复杂度,即o(log n)

我无法理解我们如何用给定的约束来解决它。有人可以告诉我,如果我遗失了什么。使用给定的约束来解决它看起来很困难。

1 个答案:

答案 0 :(得分:3)

使用优先级队列。此队列的大小应该是您拥有的行的大小。 然后,首先从每行插入第一个元素。 其次,从优先级队列中检索最小值,然后从刚检索到的元素来自同一行插入一个新元素。 第三,继续这样做,你得到你的结果。

但确实有一点需要注意。您的约束是保留空间与列的大小。在这里我使用行大小的空间。但我认为这是公平的。

考虑一下,如果你有2列和1M行,使用大小为2的数组将无济于事。