我有m個數組,每個數組的長度爲n。每個數組都進行排序。我想創建一個長度爲m * n的單個數組,包含前面數組的所有值(包括重複值),並進行排序。我必須合併這些陣列..合併排序後的數組,什麼是最佳時間複雜度?
我認爲最佳的時間複雜度M * N *日誌(M)
這裏的算法的草圖..
我創建支持數組h的長度爲m,包含每個數組的第一個元素的所有值。
然後我排序這個數組(m log m),並將最小值移到輸出數組。
然後,我將它移動的值替換爲下一個移動的值。其實我沒有取代它,但我把它插入右邊(排序)的位置。我認爲這需要記錄。
我再重複這個對所有m * n個值...因此M * N * log M的
我的問題..你能想到一個更有效的算法嗎?如果mnlogm實際上是最優的,你至少能想到一個更簡單,更優雅的算法嗎?
如何插入排序數組中的元素取對數時間? – codaddict 2011-02-25 10:33:05