アルゴリズムの安定性

一般的なソートアルゴリズムの安定性

編集します
ヒープは、ソート クイックソート シェルソート ダイレクト選択ソートは 、不安定なソートアルゴリズムとある 基数ソート バブルソート 直接挿入ソート バイナリ挿入ソート マージソート アルゴリズムをソート安定しています。
まず、単に注文前に私たちが知っておくべきソートアルゴリズムの安定性は、シーケンスの前後2箇所のソート順とシーケンスの前と後の2つが同じ位置にある同数のを確実にするためです。シンプルなフォーマルな表情で、愛= Ajと、愛の元の位置が前に、または後に前に愛のAJ位置をソートする場合。
第二に、彼は、安定性の利点について語りました。ソートアルゴリズムが安定している場合は、ソート・キーから、第2のキーの最初のキー結果を順序付けソートから別のキーは、ソートするために使用することができます。基数ソート非常に低いキーを押しても低く、高い要素を、高いソートして順番にソートされ、その後の順序は同じでは変更されません。
トピックに戻る、今や共通ソートアルゴリズムの安定性を分析し、それぞれが単純な理由を与えられました。
(1)バブルソート
バブルソートは、ほとんどの要素が大きな要素で前方または後方に移動されます。二つの隣接する要素の比較はまた、交換は、これら二つの要素の間で起こる、以上です。二つの要素が等しいのであれば、私はあなたがそれらの二つが外観を交換入れて退屈することはないだろうと思い、そうでない場合二つの等しい隣接する要素も隣接する最大2つのペアごとの交換によるフロントた場合、そのバブルソートは安定ソートアルゴリズムであるので、要素の前と後の同じ順序で、変更されていないように、切り換えられないとき。
(2)選択ソート
選択ソートn-1個の要素まで、そのようなので、上の最小の第一の位置、第2の小選択の第2の要素への残りの要素とを選択するように、各電流要素部位の最小値を選択することです、 n個の要素があるため、それだけの最大の要素のうちの1つの下で、選択しないでください。小さな要素が後ろに現れ、現在の要素に等しい要素の一つながら現在の要素が、一つの要素よりも小さい場合、次いで、選択された旅行は、次いで、交換の安定性が破壊されます。一口は、例えば、配列58529は、我々はそのように選択されていないソート、最初のパスが2と5が交換される最初の要素、壊れている二つの対向する長手方向5の元のシーケンス順序を選択することを知っています安定ソートアルゴリズム。
(3)挿入ソート
挿入ソートは、小さなシリーズに基づいて要素を挿入するために、時間に注文されています。もちろん、この整然としたシーケンスの先頭には、わずかな要素は、最初の要素があります。比較では、要素を挿入すると、あなたがそれを挿入見つけるまで正面を向いて直接その背後に挿入されたよりも大きな、またはそれ以外の場合は、最大より開始するように命令されている、つまり、最初の終わりから順序付けられたシーケンスであります場所。出会うとインサート要素が等しい場合、戻し要素に挿入された要素のような挿入要素は等しいです。したがって、同等の要素の前と後に元のシーケンス障害の順序から、順序を変更しない挿入ソートが安定しているように、列の順序付けられたシーケンスの後にあります。
(4)クイック
[I] <= A [center_index]、添字center_indexがアレイの中心的な要素であり、アレイは、一般的にとられているクイック二方向、私はすぐに残された添え字は、0番目の要素です。そして、右側のj個のインデックスが行くために残されている、とき[J]> [center_index]。iおよびjが歩行している場合、私がj <i]とA [j]は、上記のプロセスが繰り返されるIまでの交換、= jは>。[J]と[center_index]、クイックソートの完全な旅行を切り替えます。中央要素[j]が交換するときや、このような配列53343891011、今中央要素3および5(第5要素と前の要素の安定性を混乱させる可能性がありますインデックスがカウントを開始クイックソートが不安定なソートアルゴリズムであり、不安定性が中心的な要素で発生し、交換時期の[J]となるよう)交換は、素子3の安定性を破壊します。
(5)マージソート
再帰短い配列の配列に分割することでマージソート、短い配列の再帰は、結合にのみつの出口要素(すなわち、直接注文)または2配列(比較およびスワップ1)、セグメントの各順序付けられたシーケンスでありますすべてのソートされるまでに長い配列モチーフ、常に元のシーケンスをマージします。意図的に不安定にすることなく、切り替えられない場合には、スイッチング素子がない、一つまたは二つの要素に、同じ大きさの要素2を求めることができます。だから、合併のプロセスの短い順序列では、安定性を損傷することがありますか?いいえ、合併処理、我々は現在の二つの要素が等しい場合、我々は、このような安定性を確保し、シーケンスの結果の前に格納されている要素のシーケンスの前にあることを保証することができます。だから、ソートアルゴリズムソートは安定してマージ。
(6)基数ソート
基数ソートISによる低最初にソートし、次いで回収し、次に高いに従ってソートし、次に集め、そしてように、最も高い位置まで。時には第一の低、そして高優先順位を優先し、いくつかの属性の優先順位があり、最終順位は、まず、以前の高い、高優先度の同じ高低優先度の高い優先度です。基数ソートの収集、分類をベースとしているので、安定したソートアルゴリズムです。
(7)ヒルソート(シェル)
ヒルは、その要素に応じてソートされた非常に順不同の要素を始めたとき、長い挿入ソートを同期する最大のステップ、小型のソートに挿入された要素の数ので、高速ではありませんされ、とき整然とした、ステップの基本的な要素長さは、高効率のための小さい、挿入ソート順序付けられたシーケンスです。したがって、ヒルソーティング時間複雑度は、(N ^ 2)個Oより良いだろう。複数の挿入ソート、挿入ソートので、我々は1が安定していることを知って、それは要素がそれぞれ挿入ソートに動かすことができるように、同じ要素の相対的な順序を変更するのではなく、挿入ソート異なるプロセスは、その安定性は最終的になりますそれが破壊されるので、シェルソートは不安定です。
(8)ヒープソート
私たちは、子ノードのヒープ構造を意識されているI 2 * iと2 I + 1つのノードは、親ノードが2つの未満の子ノードではありません大きなスタックトップ、請求小型の一番上のスタック2以下の子ノードの親ノードが必要です*。長さn、ヒープソートプロセス及び3の最初のシーケンスにおけるその子ノードの最大値が選択され(大スタックトップ)N / 2又は最小(マイナー頂点スタック)から、これらの三つの要素の選択もちろん、安定性を損なうません。しかし、選択されたN / 2-1、N / 2-2、... 1の親要素が不安定になります。同一のスイッチング素子の節点の最初のN / 2-1親が同じで、これらの2つの要素間の安定性、後ろないが、渡されたスイッチングスイッチング素子の親ノードの後ろにN / 2の可能それは破壊されています。だから、ヒープソートは安定ソートアルゴリズムではありません。
要約すると、それが結論付け:選択ソート、クイックソート、シェルソート、ヒープソート安定ソートアルゴリズムではなく、バブルソート、挿入ソート、ソートや基数ソートマージソートアルゴリズム安定しています。

おすすめ

転載: www.cnblogs.com/cstdio1/p/11111687.html