クイックソートが子供に説明しました


16

昨年、私は「幼稚園のための量子力学」に関する素晴らしい論文を読んでいました。簡単な紙ではありませんでした。

今、私は可能な限り簡単な言葉でクイックソートを説明する方法を疑問に思います。平均複雑度がであることを(または少なくとも手波で)どのように証明できますか?または少なくとも小学校では?O(nlogn)


9
あなたはクイックソートの複雑さを証明したい... 3歳の少年に...?幸運を。

2
彼らの言語を使用してみてください、問題はそれが非常に限られていて、生物学的に彼らがこの複雑さに準備ができていないということです。アルゴリズムのような手順に従うことは、6または7歳になるまで完全には開発されません。あなたは生物学的課題に直面しています。

4
私は実際に幼稚園には提案しませんが、YouTubeでクイックソート(およびその他のソートアルゴリズム)を検索すると、多くの優れた表現が提供されます。個人的には、ハンガリーの民族舞踊が好きです。youtube.com/watch?v=ywWBy6J5gz8をご覧ください。

2
あなたが話している論文には、キャッチーなタイトルがありますが、ヒルベルト宇宙モデルなどの非常に複雑なコンテンツがあります。

2
私はクイックソートを完全に説明しようとするのをあきらめ、代わりに子供たちに「分割して征服する」ことの理解を与えようとします。再帰を完全に理解するのに十分な年齢ではない場合でも、大きな問題を小さな問題に分割するというアイデアは本当に価値があります。個人的には、複雑なアルゴリズムの不完全な概念については、いつでも除算とコンカーのしっかりとした基礎的な理解を得るでしょう。
ビンセントゲーブル

回答:


14

基本的に、Quicksortは次のとおりです。

  1. 最初のアイテムを取ります。
  2. その最初の項目よりも小さいものはすべて左側に移動し、大きいものはすべて右側に移動します(昇順と仮定)。
  3. 両側で再帰します。

地球上の4歳ごとに1と2を実行できると思います。再帰についてはもう少し説明が必要かもしれませんが、彼らにとってそれほど難しくはないはずです。

  1. 左側を繰り返し、今は右側を無視します(ただし、中央がどこだったか覚えておいてください)
  2. 何もなくなるまで左側を繰り返してください。次に、無視した最後の右側に戻り、そこでプロセスを繰り返します。
  3. 左右を使い果たしたら、完了です。

複雑さに関しては、最悪の場合はかなり簡単です。ソート済みの配列を考えてみましょう。

1 2 3 4
  2 3 4
    3 4
      4

それがかなり簡単に見られ(そして証明されます)12n2

私は平均的なケースの証拠に精通していないので、それについて提案することはできません。長さソートされていない配列では、最小または最大のアイテムを選択する確率は2と言うことができます。l、だから...?2n


おそらく(d&c)再帰は、固有の並列処理で最良かつ最も自然に説明できます。
ラファエル

2
同意します。私の本能は、あなたの友人に2つの山を与えて作業するという比ofを利用することでした。
クリスチャンマン

3
私は、あなたがどんなに努力しても、4歳児は(可能性のある例外を除いて)根本的に再帰を把握できないと主張しています。脳は単に十分に成熟していません。脳の発達には明確に定義された段階があります。たとえば、子供たちが自己認識し、現在の行動の将来の結果に気づき、意図的に並べ替えることができない厳しく管理されたスケジュールに従う皮肉を最初に理解するポイント子供の間で非常に保存されています。再帰の理解も同じカテゴリーに分類されると思います。
コンラッドルドルフ

16

クイックソートは、基本的なカウントと2による除算を理解していれば、実際には非常に簡単に理解できます。次に、説明を示します。

OK、ここには20枚のカードのデッキがあります。順番に並べたいので、1が最初、2、3のようになります。これを行う非常に簡単な方法を次に示します。

まず、このデッキを調べて、2つの山を作りましょう。20の半分は10であるため、10より大きいものは右側のこのパイルに入れられ、小さいものは左側のこのパイルに入れられます。(必ず、デモを行ってください。)

さて、小さなパイルでも同じことをしましょう。10の半分は何ですか?(誰かが「5!」と言います)そうです!したがって、右側のこのパイルには5より大きいものが入り、左側のこのパイルには小さいものが入ります。

そしてここに、10より大きいグループがあります。10の半分は5で、10プラス5は何ですか?(誰かが「15!」と言います)そうです!したがって、15を超えるものは右側のこのパイルに入れられ、15を超えるものは左側のこのパイルに入れられます。

そして今、パイルは十分に小さくなり、それらを簡単に見て整理することができます。見て、ここにある2, 4, 5, 3, 1。したがって、このように切り替えるだけで、を見ることができます1, 2, 3, 4, 5。他のパイルでも同じことをしてみましょう。パイルを順番に並べて見てみましょう。それらは1から20の順番です!

おめでとう。たくさんの子供たちに、適応型クイックソートアルゴリズムの基本原理を教えました!あなたは精神的な成熟度に応じてそれよりも少し深くすることができますが、この点をはるかに超えて進むには、正式な論理をある程度理解する必要があります。

その複雑さを証明することに関しては、それはより複雑です。正式なロジックを必要とするものの1つであり、そもそもbig-O表記の基本原則を理解する必要があります。最初はその部分を控えておきたいかもしれません。


基本的に値ではなくキーでソートするため、あなたの例は良くないと思います。すでにソートされているので、15桁目にあるものしか知ることができません。
トールビョーンラウンアンデルセン

@Thorbjørn:誰がキー/値ペアについて何か言いましたか?これは、基本的な概念を説明するための単純な整数ソートです。
メイソンウィーラー

ピボット要素を使用しないため、説明するアルゴリズムについて考えることはクイックソートではありません。
トールビョーンラウンアンデルセン

1
@ThorbjørnRavnAndersen:もちろんそうです。彼はどの要素が存在するかを知っているので、中央値を選択できます。
ラファエル

@Raphaelとその分布。カードには任意の値と色を使用でき、1〜20の数字のステッカーが付いているだけです。そのため、値ではなくキー/インデックスを参照します。
トールビョーンラヴンアンデルセン

2

これはどう?

アンプラグドコンピューターサイエンス-並べ替えアルゴリズム

すべての質問を網羅しているわけではありませんが、良い出発点です。

このトピックに関するその他のリソースは、ここにリンクさています

彼らはまた、ここでソートアルゴリズム(クイックソートを含む)を説明するビデオを利用可能にしました。このビデオは、幼い子供向けのさまざまな並べ替えアルゴリズムの違いを理解するのに役立ちます。


すばらしいもの !とても分かりやすい。
マユールパティル

1

この小さなデモのグラフィカルな美しさをご覧ください。

クイックソート


1
子供には抽象的すぎるかもしれません。
ラファエル

3
恥ずかしいことではありませんが、クラスでクイックソートを説明するまで、そのグラフィックを理解できませんでした。
クリスチャンマン

+1を持っているのは、これが私が質問を読んだときに私に最初に生じたものであるが、それから私は視覚学習者だからです。
ジョシュアドレイク

3
これはクイックソートがどのように機能するを説明する本当に間違った方法です。クイックソートをすでに知っている場合は、このアニメーションがクイックソートに関するものであることを確認できます。クイックソートがわからない場合は、クイックソートが魔法を使用するかなり高速のソートアルゴリズムであること以外は何も伝えません。オーディエンスが誰であるかによっては、このアニメーションを表示することでオーディエンスを動機付けしてクイックソートについて学ぶことができるかもしれませんが、それがどのように機能するかについて重要なことは説明しません。
伊藤剛

アニメーションはかなり素晴らしいですが、最初のチャンスで学部生であっても初心者にとっては理解しやすいものです。
ジョナプリート
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.