2012-07-04 125 views
0

我有四個排序列表,我想合併成一個排序列表。
什麼是最有效的方法呢?如果實施可以並行進行,那麼這是一個優點。合併排序列表

+0

這些列表通常有多大? – unkulunkulu

+0

我想用C來做,而不是Python。 – pythonic

+0

哦,對不起,對不起,我不知道爲什麼我想到python – unkulunkulu

回答

4

這是merge sort的合併部分。

只需將每個列表頭部的四個元素中的最小值轉儲到輸出列表中。重複,直到所有列表都爲空。假設min4是固定成本,那麼這只是O(N)。

如果您有更多信息(如列表的範圍),您可能可以稍微改進一些,但我不認爲這會影響漸近複雜性。

+0

並行合併並不像我想象的那樣簡單=>當我刪除我的答案時,我發現+1對此很有意義。 – ArjunShankar

+0

維基頁面的這一部分以及它所做的引用都是相關的:http://en.wikipedia.org/wiki/Merge_sort#Parallel_processing – ArjunShankar