web-dev-qa-db-ja.com

バブルソートは最も遅いソートアルゴリズムですか?

バブルソートはBig-Oの効率が最も悪いですか?答えが「いいえ」の場合、最も効率の悪い並べ替えアルゴリズムは何ですか?

1
xport

最悪の場合のパフォーマンスのみに基づいて比較している場合、私は BogoSort に最悪であると投票します!

このwiki link にアクセスして、さまざまな種類のランタイム比較の一般的なアイデアを入手してください。並べ替えのパフォーマンスは、常にデータとシナリオに大きく依存します。常に最悪であるとは言い難い。

37
CoolBeans

意図的に混乱させることはできませんが、バブルソートよりも遅いものがありますが、存在する本当の理由があります(とにかく)。 Knuth V3(演習の1つ)は、コードサイズを最小化するために最適化されたアルゴリズムを示しています。それは非常に小さなコードを生成します-O(N)複雑さ。

最新のハードウェアで実際に遭遇する可能性は存在しませんが、正確な一連の状況下では、バブルソートは実際にはそれほどひどいアルゴリズムではなく、逆に正確な一連の制約内ではないことにも言及する価値があります。ハードウェア上では、他の何よりも優れているだけでなく、可能なアルゴリズムの最高のパフォーマンスに漸近的に近づきます。

実際、その証明は、それがかなり広く知られるようになった主な理由であるように見えます-これは、そのような正式な証明が公開された最初のアルゴリズムです。 OTOH、それは時間の霧の中でほとんど失われており、それを教えるほとんどの人々は、なぜそれが最初に知られるようになったのか理解していません。その代わりに、私が知る限り、人々はそれを学んだという理由だけでそれを教えます。そして、何らかの理由で、その存在の理由がほとんどの人が生まれるずっと前に消えたとしても、次世代がそれについて学ぶことが重要だと思います。

意図的に不正なアルゴリズムを含める場合、bogobogosortはmuchは通常のbogosortよりも劣ります。プレーンなボゴソートは、およそO(N * N!)の複雑さを持っています。 bogobogosortは、およそO(NN-k)。これを全体的に見ると、bogosortは10項目をほんの数分(またはそれ程度)でソートできます。 bogobogosortに必要な操作の数は非常に急速に増加するため、私の知る限りでは、誰もがこれを使用してソートしたアイテムの最大数は6です(7で試行が行われましたが、少なくとも私の知る限りでは、試行は完了前に終了しました(確かに、それは通常、たった1〜2日後になります)。

19
Jerry Coffin

特定の並べ替えアルゴリズムの速度は、入力順序やキーの配布などのいくつかの異なる要因に依存します。多くの場合、バブルソートはかなり低速ですが、非常に高速になる条件がいくつかあります。

このサイトには、優れたソートアルゴリズム比較アニメーションがあります。

http://www.sorting-algorithms.com/

7
Eric King

ボゾソートはO(n!)! 2つの要素をランダムに選択して交換し、リストがソートされているかどうかを確認します。

データがほぼ並べ替えられていて、数個の要素だけが適切ではないことがわかっている場合、バブルソートは約O(c * N)時間になります。ここで、cは適切でない要素の数です。その場合、実際には他のほとんどの種類よりも高速になります。最悪の最悪のケース、最良のケース。

2
Kevin Hsu