# 配列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 # 配列全体について、前半・後半に分けてマージする場合の使用例 merge(A, 0, N/2, N)