資料結構中的合併演算法
合併演算法用於將兩個排序列表合併到一個列表中。可以在不同的情況下使用該演算法。如果要執行合併排序,則需要將分類列表合併到更大的列表中。
方法很簡單。我們使用兩個列表,其中包含兩個指標。第一個指標指向第一個列表中的元素,第二個指標指向第二個列表中的元素。根據它們的值,從這兩個列表中取出較小的元素,然後增加該對應列表的指標。此操作將一直執行,直到其中一個列表用完。然後,將剩餘的列表新增到最終合併列表的末尾。
讓我們看看說明以獲得更好的主意。
演算法
Merge(array, left, middle, right) −
Begin nLeft := m - left+1 nRight := right – m define arrays leftArr and rightArr of size nLeft and nRight respectively for i := 0 to nLeft do leftArr[i] := array[left +1] done for j := 0 to nRight do rightArr[j] := array[middle + j +1] done i := 0, j := 0, k := left while i < nLeft AND j < nRight do if leftArr[i] <= rightArr[j] then array[k] = leftArr[i] i := i+1 else array[k] = rightArr[j] j := j+1 k := k+1 done while i < nLeft do array[k] := leftArr[i] i := i+1 k := k+1 done while j < nRight do array[k] := rightArr[j] j := j+1 k := k+1 done End
廣告