# 合併陣列 A 中區間 [l, m) 與區間 [m, r) 的元素
# 各區間的元素皆已按升冪排序完成  
merge(A, l, m, r):
    for i ← 1 to r-1:
        T[i] ← A[i]  # 將陣列 A 的所有元素暫存到陣列 T

    reverse(T, m, r)  # 反轉暫存陣列 T 的後半部序列

    i ← l
    j ← r-1

    for k ← l to r-1:
        if T[i] ≤ T[j]:  # 比較前、後段序列最前端的元素,並選出較小者
        
            A[k] ← T[i] # 將選出的較小元素放回原陣列
            i ← i + 1
        else:
            A[k] ← T[j]
            j ← j - 1


# 將陣列整體分為前、後 2 段並使用此函式進行合併的範例 
merge(A, 0, N/2, N)