データ構造とアルゴリズム(Golang実装)(18)ソートアルゴリズム-序文

並べ替えアルゴリズム

人間の発達において、私たちは数えることを学びました、例えば、私たちは今日Xiaoming Xiaomingが何匹のウサギを狩ったかを知っています。一方、どちらがより多くの狩猟を行っているかを判断する必要があり、比較する必要があります。

したがって、ソートの自然な必要性が出てきました。たとえば、Xiao Mingは5匹のウサギに当たり、Xiao Wangは8匹に当たり、他の部族からは100人以上の人々がいました。私たちはメリットの報酬について話し合う必要があります。

どのように分類するか、最短の時間で最も多くのウサギを打つ人を見つける方法、これは非常に単純な質問です。

長年の研究の結果、高速から低速まで、多くのソートアルゴリズムが登場しました。たとえば、次のとおりです。

  1. 挿入ソート:直接挿入ソートと丘ソート
  2. 選択ソート:直接選択ソートおよびヒープソート
  3. 交換ソート:バブルソートとクイックソート

それらの複雑さは次のとおりです。

安定性の概念
定義:2つの等しい数を保証できますソート後、シーケンスの前後の位置の順序は変更されません。(A1 = A2、A1はソート前はA2の前にあり、A1はソート後もA2の前にあります)
重要性:安定性の本質は、同じ属性を持つデータの挿入順序を維持することです。この挿入順序ソートを後で使用する必要がある場合、安定性ソートは今回はソートしないでください。

バブルソートは間違いなく最悪のソートアルゴリズムです。

主なソートアルゴリズムとして、バブルソート、直接選択ソート、直接挿入ソートを検討します。直接挿入ソートのパフォーマンスが最高です。一般的に、ソート配列がn小さい場合、直接挿入ソートはどのソートよりも優れている場合があります。アルゴリズムは高速である必要があります。小規模なソートでのみ使用することをお勧めします。

ヒルソートは直接挿入ソートの改良版であり、直接選択ソートおよび直接挿入ソートよりも高速であり、このパフォーマンスの向上は、規模が大きくなるほど顕著になります。アルゴリズムは理解しやすいので、ソートされた配列が中程度のサイズの場合に使用できます。非常に大規模な場合、パフォーマンスはそれほど悪くありませんが、大規模な並べ替えには、次の高度な並べ替えアルゴリズムをお勧めします。

クイックソート、マージソート、ヒープソートは、より高度なソートアルゴリズムです。

現時点では、最も包括的な高度なソートアルゴリズムはクイックソートであると考えられており、クイックソートの平均時間は最も短く、ほとんどのプログラミングライブラリに組み込まれているソートアルゴリズムです。

ヒープの並べ替えも高速な並べ替えアルゴリズムであり、バイナリツリーを維持することで、ツリーのルートノードは常に最大または最小の並べ替えを実現します。

マージソートは、クイックソートと同じように分割統治法を使用して、最初に各サブシーケンスを再帰的に順序付け、次に2つの順序付けされたシーケンスを1つの順序付けされたシーケンスにマージします。

この章では、さまざまな並べ替えアルゴリズムについて説明します。

シリーズ記事エントリー

私は、スター陳思い、私が個人的に書かれているようこそ(Golangが達成)のデータ構造とアルゴリズムの記事で始まる、より親しみやすいGitBookを読むために

おすすめ

転載: www.cnblogs.com/nima/p/12724847.html