ループで、左側から枢軸以上の要素を探しています。ここでは枢軸以上という条件を、枢軸より小さい間は探索位置を進める、というように置き換えています。ループで右側から枢軸以下の要素を探します。交差したら分割は終了です。ループから脱出します。なければお互いの要素を交換します。値を更新しておくことを忘れないでください。個以上ある場合に再帰呼び出しを行います。この停止条件を忘れると正常に動作しません。それでは実際に実行してみましょう。数値だけではなく、比較演算子で大小関係を比較できるデータであればソートすることができます。●クイックソートの欠点クイックソートは、枢軸の選び方で効率が大きく左右されます。区間の中央値を枢軸に選ぶと、区間をほぼ半分に分割することができます。比例する時間でソートすることができます。つに分割にされることになります。乗に比例することになります。これは遅いソートアルゴリズムであるバブルソートや挿入ソートと同じです。この問題は枢軸の選び方を工夫することで、完全ではありませんが回避することができます。区間の中からいくつかの要素を選び、その中で中央の値を持つ要素を枢軸とします。たくさんの要素を選ぶとそれだけ最悪の枢軸を選ぶ危険性は少なくなりますが、値を選ぶのに時間がかかってしまいます。つの要素を選び、その中央値を枢軸とする場合が多いようです。●バックトラック法と再帰定義ある問題を解こうとするとき、可能性のあるパターンをすべて求めて、解の条件を満たしているか調べるしか方法がない場合があります。(backtracking)」があります。簡単な例として迷路を考えてみましょう。道が左右に分かれているとします。ここで、左の道を選んで先へ進むと、行き止まりになってしまいました。地点まで戻って右の道へ進まないといけません。このように、失敗したら元に戻って別の選択枝を選ぶ、という試行錯誤を繰り返して解を見つける方法がバックトラック法なのです。バックトラック法は、いろいろな分野の問題に応用できる方法です。再帰定義を使うと簡単にプログラムを作ることができます。(permutation)」を生成するプログラムを作ってみましょう。