私たちは通常、アルゴリズムは、多くの場合を指し並べ替えを参照してください。内部ソートアルゴリズムメモリに記録されたデータをソートします。
ソートアルゴリズムは、大きく2種類に分けることができます。
一つは、比較の並べ替え、O(nlogn)〜O(n個の時間複雑 ^ 2)、 以下のとおりです。バブルソート、選択ソート、挿入ソート、マージソート、ヒープソート、クイックソートのような。
もう一つは非ソートの比較、時間の複雑さはO(n)を達成することができ、以下のとおりです。カウンティングソート、基数ソート、バケットソートのような。
次の表は、一般的なソートアルゴリズムの性能比較を示しています。
以下、説明の便宜上、以下のアルゴリズムは、すべての並べ替え[n]はint型の配列をスクランブル対象です。
-
バブルソート(バブルソート)
アイデアは:隣接する二つの要素を比較するために、その比較的完全な現在の最大(小)要素の各ラウンドは、あなたが並べ替えを達成することができ、n個のホイールを繰り返して、最後尾に移動されます。
実装:
1 空隙(バブルソートのint []、int型開始、int型エンド) 2 { 3 のための(int型私は++; I <エンドI =始まる) 4 { 5 ため(int型 I + = J 1、J <END; J ++ ) 6 { 7 場合([I]> [J]) 8 { 9 のstd ::スワップ([I]、[J])。 10 } 11 } 12 } 13 }
特定の注文プロセスを図:
要約:
2サイクル以降の単純なソートアルゴリズム、安定性、複雑さはOであるので、(N 2)。(しかし、考える仕事を探して、初めてその年について尋ねられたとき、結果が予想される応答なしと出てくる、本当に私は恥ずかしいアルゴリズムを感じました。)