ソートアルゴリズム(未完成)

神は沈黙する - 個人の CSDN ブログ ディレクトリ

各アルゴリズムの詳細な考え方、アルゴリズムフロー(PPT)、コード実装を紹介するビデオを作成する予定です。ゆっくりと行う準備をしてください。

0. ソートアルゴリズムの安定性解析

1. 挿入ソート/直接挿入ソート

トランプを手動で並べ替えるのと同様に、各要素は前から順序付けされたサブ配列に順番に配置されます (最初は、このサブ配列には最初の要素のみが含まれます)。実装では、ターゲット要素は通常、段階的に比較されます
。前に進みます。次数に到達するまで左に進みます。
時間計算量は O(N^2)、空間計算量は O(1) です。
安定しています。

1.1 ヒルソーティング

グループ化は挿入ソートで行われており、グループ数が徐々に1つまで減っていき
不安定です。

2. 簡易選択ソート

各反復で最小の要素を見つけて、それを先頭に置きます

3. ヒープソート

最初に順序付けされていないヒープを作成し、次にすべての非リーフ ノードを (最後のノードから開始して) 反復して各ノードをヒープします (大まかに言うと、このノードが子ノードにシンクするかどうかを検討し、子ノードに至るまでシンクする必要があります)。適切な職位)上位)

ルート ノードが取り出されるたびに、上から下に積み上げられ、新しいルート ノードが元の最後のノードの位置に配置されます。

4. バブルソート

ポインタをスライドさせたときに、下位桁とポインタ桁の大小を比較し、前者が大きければ後者を入れ替え、つまり、毎回最大のものを下位桁に送ります。(フラグマークを追加することもできます。すでに順番に配置されており、移動する必要がない場合は、次の繰り返しが停止されます)

5. クイックソート

数値を一度に 1 つの大きなグループと 1 つの小さなグループに分割します

6. マージソート

  1. 配列全体を多数の連続した小さな配列 (1 つの数字から始まる) に分割し、小さな配列を順番にマージします。
  2. 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. カウントソート

非常に大まかに、要素ごとに新しい配列のインデックスに直接入力するだけです。

参考文献

  1. 基数並べ替え_百度百科事典
  2. JAVA の基数ソート LSD sequence_lsd アルゴリズム java_two two two two two のブログ - CSDN ブログ

おすすめ

転載: blog.csdn.net/PolarisRisingWar/article/details/132915194