病理学的分類
上司は、会社のアプリケーションのパフォーマンスを改善するために、ソートアルゴリズムを開発することを要求しています。ただし、アプリケーションを作成したので、大幅に高速化できる可能性は低いことがわかります。上司を失望させたくないので、特定のデータセットを* sortするよりも優れた新しいアルゴリズムを開発することにしました。もちろん、アルゴリズムが一部のケースでのみ機能することを明確にすることはできません。そのため、可能な限り曖昧にする必要があります。
このコンテストの目的は、選択した言語でソートルーチンを記述し、特定のデータセットで他のデータセットよりも高いパフォーマンスを発揮し、再現性のある結果を出すことです。速度を決定する分類が具体的であるほど、より良い結果になります。アルゴリズムは何らかのソートを行う必要があるため、既に完全にソートされているデータに依存するアルゴリズム(何もしないアルゴリズムなど)、または完全に逆にソートされているデータに依存するアルゴリズムは両方とも無効です。並べ替えアルゴリズムは、データのセットを正しく並べ替える必要があります。
ルーチンを提示した後、特定のデータセットでのみ機能する理由の説明を含め、少なくとも1つの良い(高速)データのセットと1つの悪い(低速)データのセットでテストを実行してください。ここでのポイントは、あなたが上司に、より良いソート方法につまずいたことを証明できるようにすることです。したがって、より多くのテストデータが優れています。もちろん、上司に良いデータからのテスト結果を表示するだけなので、必要なテストデータの欠陥はあまり明白ではありません。あなたの言語に該当する場合、あなたのアルゴリズムがあなたの言語の組み込みソートアルゴリズムよりも速いことを示してください。
たとえば、挿入ソートアルゴリズムを送信する場合、挿入ソートはほぼソートされたデータのO(n)に近づくため、良好なデータは既にほぼソートされたデータであり、不良データは完全にランダムなデータです。しかし、上司はおそらく、テストデータのすべてがそもそもほぼ並べ替えられていることに気付くので、これはあまり良くありません。
これは人気コンテストなので、7日後(5月21日)に投票数が最も多い回答が勝ちます。
誰も私に負けない場合は、均一に分散されたデータセットを利用するコミュニティWikiの回答を送信したいと思います。