2016-11-02 88 views
0

我正在做一些算法的事情。有兩個數組,長度爲n的數組A按升序排序,而長度爲m的數組B不是。該問題要求我們生成一個數組,其中m + n個整數按升序排序。它應該終止於o(n + mlogm)時間。我認爲先對B進行合併排序,可能需要o(mlogm)時間。然後對A和B執行合併排序,但顯然需要更多時間。還有其他解決方案嗎?排序在O(n + mlogm)時間陣列

+1

可能重複[合併兩個數組有效 - 一個排序,另一個未排序](http://stackoverflow.com/questions/13862701/merge-two-arrays-efficiently-一個排序 - 另一個未排序) –

回答

1

你是對的,第一步是排序第二個數組在O(mlogm)。

但第二步是有序陣列的簡單合併結果表明,需要O(N + M)

(合併等於合併歸併的相位。Arbitrary example

所以整體複雜度爲O(mlogm + m + n)= O(mlogm + n)

+2

似乎是正確的,複雜性將是O(n + m + mlogm) - > O(n + mlogm) – pirate

相關問題