给定具有可比较元素的k个排序列表,其中没有两个元素相等,我们可以通过各种算法将它们合并到新的排序列表L.我的问题是,考虑到这个假设列表L中元素的位置,输出元素列表及其位置的有效(优于合并和排序)算法是什么。
我也很乐意知道相关的关键字。
给定的只是k个排序列表和元素在列表L中的位置。但是不应该创建L,特别是不给出。
答案 0 :(得分:2)
由于您不知道元素在哪个列表中,因此您必须先检查每个列表,直到找到它为止。但由于这些列表已排序,您可以使用binary search更快地进行此查找。
L
和k
原始列表l_1
到l_n
和索引x
l_i
k
原始列表的L[x]
l_i
l_i
以及其中L[x]
的位置此算法的总复杂度约为 O(k log n), n 是 k 中元素的平均数量>原始名单。
如果您必须为x
的多个值重复此操作,则可能需要先将k
原始列表转换为sets。这将需要预先工作的 O(kn)来创建集合,但是由于<对于每个x
只需要 O(k) em> O(1)在集合中查找。