質問: ### ソートのアルゴリズムを論理的に説明したい C#の勉強中なのですが、 これまでプログラミングはもとより、 論理的思考や、アルゴリズムについても知識のない状態です。 現在は並び替えの問題に取り組む中で、 並び替えとは、どういうものか、どう考えれば良いか、 根本的な部分が足りないと感じています。 ### 問題 ダンボールが3箱あり、それぞれ重さが異なります。 天秤を使い、重さを比べ、軽い順に並べます。 効率よく、並び替えるには、どういう方法があるでしょうか? ### 不明点 上記の問題は、ごく簡単な日常でもありえる並び替えだと思います。 漠然とは、理解しているつもりですが、 ですが、それを論理的に考え、明確な根拠のある 説明の仕方がわかりません。
回答: ダンボールの数がもっと多ければ様々なソートアルゴリズムがありますが、三つしかない、さらに天秤を使うことが決まっているのでは使えるアルゴリズムは限られます。 二回目に重いほうから比べるか軽い方から比べるかくらいの違いしかないでしょう。 自分の手を使わずに言葉だけで人にやらせるとしたらどうするか、その手順をそのまま説明すればいいだけだと思います。 というか、本当にこれが説明できないとしたらかなり問題です。おそらく幼稚園児でもできる子は多いと思います。難しく考えすぎてはいませんか? とりあえず、天秤というのは二つの物の重さを比較する道具です。 最初の手順は、三つのうち任意の二つを選んで順位をつけるという一つの選択肢しかありません。 次の手順は、軽い方か重い方と残った一つを比べて順位をつけるという二つの選択肢しかありません。 これで三つの順位が決まる場合があります。 決まらなかった場合、もう一度天秤を使うことによって順位が決まります。 手順は多くて三つしかありません。考えることを放棄してはいませんか?