有k个列表,其中包含m个未排序的列表(0 <= m
答案 0 :(得分:1)
假设n是所有列表中总元素的数量。
假设这些元素的数量在所有列表之间平均分配,您可以执行以下操作:
对每个未排序的列表进行排序
合并所有列表中的所有元素
运行时分析:
每个列表中的元素数等于n / k。
因此,对每个未排序列表进行排序需要O((n / k) log(n / k)=&gt;运行时对所有m个列表进行排序等于O(m (n / k) *的log(n / k))的
合并部分采用O(n)。
因此,我们得到整体运行时间= O(n + m *(n / k)* log(n / k))。
答案 1 :(得分:0)
你可以使用插入排序,这将是一个简单的答案。最糟糕的是它本身会运行O(n ** 2)。
否则排序(合并或快速排序)未排序的列表并合并它们。根据你的m和k你可以做一些微观的优化。在这里,你的复杂性将是基于n的O(nlogn)。你可以弄清楚它与k和m的对应关系。
答案 2 :(得分:0)
使用随机快速排序对未排序列表进行排序,然后使用合并排序合并所有排序列表。