data
partition(a, 0, 8), pivot=6
ソートが完了するまでの手順
ソート完了
再帰経路
現在分割中の範囲
phase 初期化
範囲 -
pivot -
枢軸以下 -
枢軸と等しい -
枢軸以上 -
比較回数 0
交換回数 0
残りステップ 0
通常
現在の範囲
pivot
次に分割する配列
分割完了した配列
確定した要素
クイックソートのコード
中央の要素を pivot とし、分割後の左側と右側を再帰的に同じように処理します。
- 1def quick_sort(a, left, right):
- 2 pivot = a[(left + right) // 2]
- 3 pl, pr = partition(a, left, right, pivot)
- 4 if left < pr:
quick_sort(a, left, pr) - 5 if pl < right:
quick_sort(a, pl, right) - 6 return a
現在の再帰経路
[0, 8]
現在の配列
[5, 7, 1, 4, 6, 2, 3, 9, 8]