質問: PHPで再帰を使用してバブルソートを実装する場合ですが、 スマートな終了条件はどんな風に書けるでしょうか? 僕の頭に浮んだ終了条件は、最後の要素を順番に各要素と比較していき、一つも入れ替えが無かったら終了、というものでした。 これだとちょっとかっこ悪い気がしまして、 「こっちの方がシンプルでオシャレな終了条件だよ」というものがありましたら、教えて頂けないでしょうか。 よろしくお願い致します。 追記です 要素数は不定とさせて下さい。
回答: ソート開始時に要素数を得る手段がないまたはコストがかかるなら、番兵を使うのも一つの方法です。 番兵 仮に一番小さな値が浮かび上がるのであれば、データとして取りうる値よりさらに大きな値を一番上にあらかじめ置いておきます。そしてその値が一つ沈んだ時をもってループを終了し、呼び出し元へ戻ります。すべてのループが終了したときには番兵は一番下に沈んでいるはずなので、それを取り除きます。 しかしそもそもバブルソートがスマートでないので。