← デモ一覧へ戻る

マージソート手順アニメーション

data merge_sort(列c)
分割とマージの木
現在のマージ まだ merge(整列済みのa, 整列済みのb) は始まっていません
phase 初期化 列c - mid - 列a - 列b - 比較回数 0 書き込み回数 0 残りステップ 0
通常
分割中
マージ中
要素1個
マージ完了

マージソートの疑似コード

列c を半分に分割し、整列済みの列a と整列済みの列b を最後に merge します。
  1. 1関数 merge_sort(列c) {
  2. 2  if (列c の要素数が 1) {
  3. 3    return 列c
  4. 4  列a, 列b = 列c を半分に分割する
  5. 5  整列済みのa = merge_sort(列a)
  6. 6  整列済みのb = merge_sort(列b)
  7. 7  return merge(整列済みのa, 整列済みのb)
  8. 8}
初期状態
現在の列c
[55, 13, 3, 45, 74, 87, 46, 30]
現在の配列
[55, 13, 3, 45, 74, 87, 46, 30]