0
我們有兩個排序數組。在不使用額外內存的情況下,我們需要合併這兩個數組(第二個數組具有更多的合併空間)。輸出應通過第二個數組返回合併排序的數組
我們有兩個排序數組。在不使用額外內存的情況下,我們需要合併這兩個數組(第二個數組具有更多的合併空間)。輸出應通過第二個數組返回合併排序的數組
假設addtional空間位於第二個數組的末尾,只需從數組末尾開始合併即可。使用指向數組中當前位置的兩個索引i1
和i2
以及指向合併數組中當前位置的索引i
。
i
初始化,i1
和i2
指向相應陣列的最後一個項目。
迭代:最大的a1[i1]
和a2[i2]
寫入a2[i]
並調整指數(即減少i
和陣列保持大值的索引)。
不錯的音符先生... – Exception 2013-09-09 04:26:59
我已經經歷了Mergesort從後到前,最終的數據將在第二個數組的末尾生成。這種情況下,第二個數組或最終數組可能在前面有一些空的空間。比這更好的方法? – kc3 2011-05-04 15:28:26
只是將數組佔用區域的大小加起來,並從數組中的那個位置開始,而不是從最末尾開始。例如,假設A1包含10個元素和A2 8個元素,但A2有23個元素的空間。不是從元素23開始並向後工作,而是從元素18開始並向後工作。 – 2011-05-04 15:53:29
此鏈接http://stackoverflow.com/questions/5958169/how-to-merge-two-sorted-arrays-into-a-sorted-array應該可以解決你的問題。 – Exception 2013-09-09 04:50:11