ソートアルゴリズム] [(1)ソート安定性

安定性のソート


急いによって2019年11月10日午前9時42分11秒

 

1、安定性

①定義:確保するには、2つの等しい数を、ソート後、その前面の順序と同じ順序で後方位置。(フロントの前で先にA1 = A2、A1、A2の嘘は、ソート、A1 A2をソート)

②重要性:安定性は、本質的に挿入順の同じ属性を有するデータを保持しますが、挿入ソート順の背中を使用する必要がある場合、この種の安定性は、並べ替えを避けることができます。

例えば、会社によれば、このプロモーションのための基準として(会社の標準を入力するために)「容量」と「背景」したい、非常にAおよびBを想定する能力、安定性は「容量」に係る第一ソートされている場合ソートその後、あなたは「」年功に基づいて第2の時間を必要としません。

ソート、「年功序列」ためには、社員テーブルのソート順に従業員です。それが不安定一種である場合は、2番目の順序付けを必要とする、システムのオーバーヘッドが増加します。

 

2、分類

①ソート安定性:バブルソート、挿入ソート、マージソート、基数ソート

②不安定並び替え:選択ソート、クイックソート、シェルソート、ヒープソート

 

3、サンプルの分析

(1)ソート安定性

①バブルソート

大きな要素に始まった偽造ソートは、基本的に右に残っている(小さな要素を置くようになった左または右前方に移動)トーンをバックアップ。比較は、2つの隣接する要素を比較し、交換は、これらの二つの要素の間で起こります。二つの要素が等しいのであれば、あなたはそれを交換タリアに退屈することはできません。二つの等しい要素が隣接していない場合、交換二十2の波の対象となり、それらが隣接する場合、交換は起こりません。

②挿入ソート

基本的に挿入は、ソート、小さな、左右の比較、第1のインサート要素に基づいて順番に発注されています。最初にこの小さなシーケンスは一つだけの要素です。比較は、初めの終わりから順序付けられたシーケンスで、かつ要素が最大の開始を命じられている挿入すると、あなたがそれを見つけるまで、それ以外の場合は比較的直進、直接その背後に挿入さよりも大きい、またはそれよりも小さい場合等しいが、それの後ろに挿入しました。

③マージソート

本質的に、配列が短い配列に再帰的に分割され、ソートマージ、エクスポートは再帰的である唯一の短い配列要素(この場合は、直接注文した検討)または2配列(比較およびスワップ1)、及びそれぞれの短い配列が順序付け全てがソートされるまで、元の合併の長い、連続したシーケンスの順序付けられたシーケンスに組み合わせます。一つまたは二つの要素がある場合、意図的に切り替えていない場合、スイッチング素子がないため、同じ大きさの要素2は、安定性を破壊しないであろう。だから、短いANに安定が破損するかどうか、合併処理の手順を命じましたか?いいえ。マージプロセスは現在、2つの要素が等しいされたとき、前部要素の前面のシーケンスは、依然として配列結果に格納されています。

④基数ソート

基数ソート最初にソートし、次いで回収し、次いで高に応じてソート、次いで回収し、そう最も高い位置まで、上のローに応じて、本質的です。例えば、シーケンス "171(1)、331171(2)" は、下位(ビット) "171(1)、331171(2)" であり、上位(10)は「331 171(1)、171(あります2) "上部ソーティング(百)結果は" 171(1)、171(2)、331 "

(2)ソート不安定

①選択ソート

選択ソート本質的に、各選択された場所最小残りの要素について。例えば等残りの要素の第2の小選択内側の第2の位置に、最小の第一の位置を選択し、そしてします。そのような配列「5(1)8,5(2)、2,9」、5(1)及び2のような不安定化を交換することができます。

②クイックソート

クイックソートは、基本的に、最初の要素を選択する[center_index](インデックス= 0の中心的要素です )。二つの方向、とき[I]> [center_index私は、すぐに残されている最初の添字から始まる ] とき[J] <= [開始左の右に添字jで絞り込ま center_index ]停止して、私はちょうど演奏開始です左の添字は、上記のプロセスが繰り返されるI> J、[Jを交換]と[center_index]、クイックソートの完全な旅まで。中央要素[j]は交換するときや、そのような配列「5,3(1)4,3(2)、8,11,9」と前の要素の安定性を、混乱する可能性があります今中央要素3および5(2)のスイッチング素子3の安定性が破壊されるであろう。不安定性は、中心元素で発生し、交換時期の[J]

③ヒルソート

ヒル自然をソートすることは非常に順不同の要素を起動したときに、要素の同期長い挿入ソートに基づいていない、高速、小型のソートに挿入された要素の数ので、最大ステップ;ための基本的な要素ステップサイズは、高効率のために小さい、挿入ソート順序付きシーケンスです。したがって、ヒルソーティング時間複雑度は、O(N ^ 2)個より良いだろう。複数の挿入ソートので、挿入ソート、我々は、要素がそれぞれ挿入ソート、挿入ソート別のプロセスで動かすことができるように、その安定性は最終的になります、1が安定している、それは同じ要素の相対的な順序を変更しないことを知っているが、シェルソートが不安定であるので、それは、破壊されています。

④ヒープソート

ヒープソート基本的に、私たちは私と2は、I + 1つのノード、大規模なトップ・スタックは、親ノードが2つのつの子ノードに等しい以上であることが必要です* *子ノードのスタック構造iが2であることを知って、少しトップスタックは親を少なく2に等しいよりもさが必要です子ノード。長さの配列のN、ヒープソートプロセス及び3の最初の子の最大値は、N / 2又は最小(マイナー頂点スタック)から(大スタックのトップ)は、これらの三つの要素の選択を選択されたノードもちろん、安定性を損なうません。しかし、親要素が不安定になり選択され、N / 2-1、N / 2-2、···1。同一のスイッチング素子の節点の最初のN / 2-1親が同じで、これらの2つの要素間の安定性、後ろないが、スイッチング素子のスイッチングの親ノードの後ろにN / 2の可能は、渡されましたそれは破壊されています。だから、ヒープはソートソートアルゴリズム安定していません。

 

4、時間の複雑さと空間の複雑さ

ソートアルゴリズム
カテゴリ Sortメソッド 時間複雑 宇宙複雑 安定 アプリケーションの基礎 分析します 
平均ケース ベストケース 最悪の場合 補助メモリ
挿入ソート 直接に O(N 2 O(n) O(N 2  O(1)  安定しました 大半は、すでにソート  
シェルソート  O(n1.3) O(n)  O(N 2)   O(1)  不安定な    
選択ソート 直接選択 O(N 2 O(N 2 O(N 2  O(1)  不安定な nが比較的小さいです  
ヒープソート O(nlog 2 n)の  O(nlog 2 n)の O(nlog 2 n)の   O(1)  不安定な nが比較的大きいです  
ソート交換 バブルソート O(N 2  O(n)   O(N 2)  O(1)   安定しました nが比較的小さいです  
クイックソート O(nlog 2 n)の  O(nlog 2 n)の  O(N 2)   O(log2n)~O(n)  不安定な nが比較的大きいです  
マージソート  O(nlog 2 n)の  O(nlog 2 n)の O(nlog 2 n)の   O(1)  安定しました nが比較的大きいです  
基数ソート        O(1)  安定しました    

 

 

 

 

 

 

 

 

 

 

 

 

 

おすすめ

転載: www.cnblogs.com/yadiel-cc/p/11829360.html