← デモ一覧へ戻る

クイックソート手順アニメーション

data partition(a, 0, 8), pivot=6
ソートが完了するまでの手順
再帰経路 現在分割中の範囲
phase 初期化 範囲 - pivot - 枢軸以下 - 枢軸と等しい - 枢軸以上 - 比較回数 0 交換回数 0 残りステップ 0
通常
現在の範囲
pivot
次に分割する配列
分割完了した配列
確定した要素

クイックソートのコード

中央の要素を pivot とし、分割後の左側と右側を再帰的に同じように処理します。
  1. 1def quick_sort(a, left, right):
  2. 2  pivot = a[(left + right) // 2]
  3. 3  pl, pr = partition(a, left, right, pivot)
  4. 4  if left < pr:
        quick_sort(a, left, pr)
  5. 5  if pl < right:
        quick_sort(a, pl, right)
  6. 6  return a
初期状態
現在の再帰経路
[0, 8]
現在の配列
[5, 7, 1, 4, 6, 2, 3, 9, 8]