ボゴソートをサイト上に実装してみた!無限に終わらないソートアルゴリズム?

Pocket

ボゴソートをブラウザ上で行い、ソートが行われていく様子をアニメーションで可視化するサイトツールです。ソートする数値の個数は調整できます。

上の埋め込み内でも使えますが、うまく動かない・大きなページで使いたいというときは、元のボゴソートシミュレーションページへ(新しいタブで開きます)。

\当サイトではリンク広告を利用しています。/

ボゴソートとは

ボゴソート(BogoSort)は、非常に単純かつ非効率なソートアルゴリズムです。ネタアルゴリズム(ジョークアルゴリズム)の代表例として有名です。
その仕組みは以下の通りです:

  1. 配列が昇順に並んでいるか確認する
  2. 並んでいなければ、ランダムにシャッフルする
  3. 並ぶまで繰り返す

正直に言うと、要素数が増えるとほぼ終わらないことも多く、「理論上は正しいけれど実用には向かない」ことで有名です。プログラミング学習やアルゴリズム理解の教材としては面白い存在です。

ツールの使い方

作ったツールでは、ブラウザ上でボゴソートの動きを視覚的に確認できます。

  1. 棒グラフの本数を選ぶ
    2本から10本まで選択可能です。
  2. 初期化ボタンでランダム配置
    選択した本数の棒がランダムな高さで並びます。
  3. ボゴソート開始ボタンで並べ替え
    シャッフルが繰り返され、棒が滑らかに動くアニメーションでソート過程が確認できます。
  4. 完了メッセージ
    昇順に並んだら棒が緑色に変わり、キャンバス下に「ソート完了!」と表示されます。

⚠ 注意点

  • 棒の本数が多いと、ボゴソートはほぼ終わらない可能性があります。
  • そこで、試行回数の制限(タイムアウト)として、10000回の並び替えをしてもそろわなければ停止する機能を設けています。
  • 制限を超えると、途中で「💀あきらめました!」と表示されます。

また、棒の幅やラベルの大きさを調整して見やすくしており、少ない棒でも動きが確認しやすくしています。

まとめ

  • ボゴソートは「ランダムシャッフルで並ぶまで繰り返す」非効率ソート
  • 作ったツールでは棒グラフでソートの過程を視覚化
  • 棒の本数を選んで初期化、ボゴソート開始でアニメーション確認
  • 昇順でソート完了、または試行回数上限でタイムアウト表示
  • 棒の本数が多い場合は、タイムアウトで途中終了する可能性あり

ボゴソートはネタアルゴリズムですが、ソートアルゴリズムの仕組みと有難さを直感的に理解するには役立つかもしれません(?)。学習用や遊び用としても楽しめるツールです。

\当サイトではリンク広告を利用しています。/
サイトツール