各アルゴリズムの詳細な考え方、アルゴリズムフロー(PPT)、コード実装を紹介するビデオを作成する予定です。ゆっくりと行う準備をしてください。
記事ディレクトリ
0. ソートアルゴリズムの安定性解析
1. 挿入ソート/直接挿入ソート
トランプを手動で並べ替えるのと同様に、各要素は前から順序付けされたサブ配列に順番に配置されます (最初は、このサブ配列には最初の要素のみが含まれます)。実装では、ターゲット要素は通常、段階的に比較されます
。前に進みます。次数に到達するまで左に進みます。
時間計算量は O(N^2)、空間計算量は O(1) です。
安定しています。
1.1 ヒルソーティング
グループ化は挿入ソートで行われており、グループ数が徐々に1つまで減っていき
不安定です。
2. 簡易選択ソート
各反復で最小の要素を見つけて、それを先頭に置きます
3. ヒープソート
最初に順序付けされていないヒープを作成し、次にすべての非リーフ ノードを (最後のノードから開始して) 反復して各ノードをヒープします (大まかに言うと、このノードが子ノードにシンクするかどうかを検討し、子ノードに至るまでシンクする必要があります)。適切な職位)上位)
ルート ノードが取り出されるたびに、上から下に積み上げられ、新しいルート ノードが元の最後のノードの位置に配置されます。
4. バブルソート
ポインタをスライドさせたときに、下位桁とポインタ桁の大小を比較し、前者が大きければ後者を入れ替え、つまり、毎回最大のものを下位桁に送ります。(フラグマークを追加することもできます。すでに順番に配置されており、移動する必要がない場合は、次の繰り返しが停止されます)
5. クイックソート
数値を一度に 1 つの大きなグループと 1 つの小さなグループに分割します
6. マージソート
- 配列全体を多数の連続した小さな配列 (1 つの数字から始まる) に分割し、小さな配列を順番にマージします。
- 2 つの連続したシーケンスを 1 つの連続したシーケンスにマージします。2 つのシーケンスのそれぞれにポインターを置き、要素のサイズを比較してから、小さな要素を新しいスペースに置き、1 つのシーケンスが通過するまでポインターを後方に移動します。
7. バケット仕分け/ビン仕分け
バケットに分割し、各バケットを個別に分類します
8. 基数ソート/分散ソート/バケット法
安定した
O ( n log ( r ) m ) O (n\log(r)m)O ( nlog ( r ) m ) _
1. 最下位桁優先 LSD 法
(この略語は誤解を招きすぎるようです)
小さい番号から割り当て、割り当てごとにグループに応じて結合し、すべての桁が割り当てられるまで再分配します。
小さな数列に適しています
2. 最上位桁ファースト MSD 法
LSD 方式とは逆に、最上位ビットをベースとして割り当てが開始され、割り当てのたびにグループ内にサブバケットが設定され、最後のビットが割り当てられるまで割り当てられます。
9. カウントソート
非常に大まかに、要素ごとに新しい配列のインデックスに直接入力するだけです。