【问题标题】:Selecting top n items from multiple sorted arrays从多个排序数组中选择前 n 个项目
【发布时间】:2018-09-01 02:43:35
【问题描述】:

从多个数组中选择顶部n 元素的最佳算法是什么,前提是每个数组的排序方式与结果数组的排序方式相同。

读取元素非常昂贵,因此读取次数应该是绝对最小值。

【问题讨论】:

标签: algorithm sorting


【解决方案1】:

将元组(current_element, array_number, current_index=0)放入优先级队列(例如,基于二进制最大堆),按元素值排序

然后移除队列的顶部 n 次。

删除相应数组中的增量索引后(如果可能),获取下一个元素并将更新的元组再次插入队列中

【讨论】:

  • 我只是在输入这个答案,你打败了我。但是,我要补充一点,您需要将其设为最大堆。在 Python 中,您可以通过将 current_element 首先放入元组中,然后按照 stackoverflow.com/questions/2501457/… 中的建议来获得最大堆。
  • @btilly 如果您认为您的答案是相关的,请不要犹豫发布它。
  • @Anees 这是完全相同的策略,所以这个答案使它变得多余。
猜你喜欢
  • 1970-01-01
  • 2018-05-17
  • 2018-05-06
  • 2018-08-26
  • 1970-01-01
  • 2010-12-24
  • 1970-01-01
  • 1970-01-01
  • 2013-06-26
相关资源
最近更新 更多