作ったプログラムの話せっかく作ったので、どういう特性があるのか調べてみた。結論から言うと、ヒープソートが2分木を使うのはシンプルだからという単純な理由ではなかったという話です。ポケモンなら、720。木の1つの親に対する子の数。質問するときの選択肢の最大数より1小さい値。最悪:最良:平均:ということです(Wikipediaより抜粋)プログラムでは、質問するとき必ず1がヒープ木の親、2以降は子になっています。若い番号の子の方が深い(世代が多い)です。答え続けると質問数の最小が得られます。答え続けると質問数の最大が得られます。ランダムに回答するとほぼ平均が得られます。場合で、木の分岐数を増やしていくと、こんな感じ。258650.0分岐数を増やせば質問の回数は減る。実際に質問されればわかるが、大量の選択肢の中から目的のものを見つけるのに時間がかかってしまうわけで。それを考慮したものが、右側の3つ。倍したもので、プログラムで最大もしくは最小を求めようとした時にかかる比較数が加味されることになります。なると、プログラムで比較してソートするなら2分木でやるのが効率的なんですね...。木は2分木となるわけだが、3つのうちの最大値をとる、ということで、少し非効率になっているので、実際のヒープソートはこれよりも速いと思います。グラフにするとこんな感じ。未満で最大値(最小値)が求められるなら多分木にする価値はあるのかもしれないけど、今のところ人間の頭以外では不可能なので...*1。おまけ前回、ツリーを見せようとして、画像のアップロードが失敗したくさくて載せなかったんだけど、今日見たらなぜかあったので載せとく。2100レックウザは後で追記しますよ。その7Archiveいんふぉリンクはご自由にどうぞ書いてある内容を自分で試すのは構いませんが、自己責任でお願いします改造したデータを使って他人に迷惑をかける行為は、ダメ、絶対に。書いてある内容に対して、何らかの損害を被ったとしても、ルギア君は、一切の責任を負いません。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。