排序包含已排序和未排序列表的列表

时间:2012-08-20 22:25:14

标签: sorting merging-data

有k个列表,其中包含m个未排序的列表(0 <= m

3 个答案:

答案 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)

使用随机快速排序对未排序列表进行排序,然后使用合并排序合并所有排序列表。