# 合并数组 A 的区间 [l, m) 的元素和区间 [m, r) 的元素
# 合并后两个区间的元素按升序排列 
merge(A, l, m, r):
    for i ← l to r-1:
        T[i] ← A[i]

    reverse(T, m, r)

    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


# 将有 N 个元素的数组的前半部分和后半部分分开再合并、排序的使用示例
merge(A, 0, N/2, N)