ヒープソートでなぜ再帰? 〜日本語版ウィキペディアの問題点と最強最速のヒープソート〜 最近ヒープソートを作らせてみると、再帰を使ったヒープソートが出てくることが多い。 再帰を使ったヒープソートは考え方が単純でわかりやすい。 けれど、ヒープソートでの繰り返しは、あらかじめ決まった回数を繰り返すため、再帰の必要性はない。 普通にループ処理をした方が圧倒的に速いし、スタックのオーバーフローの心配も少ない。 クイックソートのように何回繰り返すか分からないような場合は再帰がベストだし、再帰しか方法がないようなケースもあるが、再帰は呼び出す前の関数の状態を保持するため、あっという間にスタックのオーバーフローを引き起こす。 LinuxであればWindowsの10倍程度の再帰に対するスタックメモリ耐性を持つが、それでも遅くなることは間違いないし、かなりのスタックメモリを消費する。 ヒープソートでなぜ再帰?