【发布时间】:2018-09-01 02:43:35
【问题描述】:
从多个数组中选择顶部n 元素的最佳算法是什么,前提是每个数组的排序方式与结果数组的排序方式相同。
读取元素非常昂贵,因此读取次数应该是绝对最小值。
【问题讨论】:
从多个数组中选择顶部n 元素的最佳算法是什么,前提是每个数组的排序方式与结果数组的排序方式相同。
读取元素非常昂贵,因此读取次数应该是绝对最小值。
【问题讨论】:
将元组(current_element, array_number, current_index=0)放入优先级队列(例如,基于二进制最大堆),按元素值排序
然后移除队列的顶部 n 次。
删除相应数组中的增量索引后(如果可能),获取下一个元素并将更新的元组再次插入队列中
【讨论】:
current_element 首先放入元组中,然后按照 stackoverflow.com/questions/2501457/… 中的建议来获得最大堆。