この記事では、常に最後にまたは実際には、それが安定または不安定の人が準備している理由を理解することを忘れないでくださいです。
まず、単に注文前に私たちが知っておくべきソートアルゴリズムの安定性は、シーケンスの前後2箇所のソート順とシーケンスの前と後の2つが同じ位置にある同数のを確実にするためです。シンプルなフォーマルな表情で、愛= Ajと、愛の元の位置が前に、または後に前に愛のAJ位置をソートする場合。
第二に、彼は、安定性の利点について語りました。ソートアルゴリズムが安定している場合は、ソート・キーから、第2のキーの最初のキー結果を順序付けソートから別のキーは、ソートするために使用することができます。基数ソート非常に低いキーを押しても低く、高い要素を、高いソートして順番にソートされ、その後の順序は同じでは変更されません。ソートアルゴリズムは、比較に基づいてアルゴリズムをランク付けするという点で、安定している場合に加えて、スイッチング素子の数が少なくてもよい(個人的な感情、確認されていません)。
トピックに戻る、今や共通ソートアルゴリズムの安定性を分析し、それぞれが単純な理由を与えられました。
(1)バブルソート
バブルソートは、ほとんどの要素が大きな要素で前方または後方に移動されます。二つの隣接する要素の比較はまた、交換は、これら二つの要素の間で起こる、以上です。二つの要素が等しいのであれば、私はあなたがそれらの二つが外観を交換入れて退屈することはないだろうと思い、そうでない場合二つの等しい隣接する要素も隣接する最大2つのペアごとの交換によるフロントた場合、そのバブルソートは安定ソートアルゴリズムであるので、要素の前と後の同じ順序で、変更されていないように、切り換えられないとき。
バブルソートの詳細、会場:バブルソート
(2)選択ソート
選択ソートは、最初のn個まで、ように最小第一の位置、第2の小選択の第2の要素への残りの要素とを選択するように、各電流要素部位の最小値を選択することである - 1つの要素を、 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)ヒルソート(シェル)
ヒルは、その要素に応じてソートされた非常に順不同の要素を始めたとき、長い挿入ソートを同期する最大のステップ、小型のソートに挿入された要素の数ので、高速ではありませんされ、とき整然とした、ステップの基本的な要素長さは、高効率のための小さい、挿入ソート順序付けられたシーケンスです。だから、ヒルソート時間の複雑さはO(N ^ 2)の数よりも良くなります。複数の挿入ソート、挿入ソートので、我々は1が安定していることを知って、それは要素がそれぞれ挿入ソートに動かすことができるように、同じ要素の相対的な順序を変更するのではなく、挿入ソート異なるプロセスは、その安定性は最終的になりますそれが破壊されるので、シェルソートは不安定です。
ヒルは詳細、会場を並べ替え:ヒルソート
(8)ヒープソート
私たちは、子ノードのヒープ構造を意識されているI 2 * iと2 I + 1つのノードは、親ノードが2つの未満の子ノードではありません大きなスタックトップ、請求小型の一番上のスタック2以下の子ノードの親ノードが必要です*。長さn、ヒープソートプロセス及び3の最初のシーケンスにおけるその子ノードの最大値が選択され(大スタックトップ)N / 2又は最小(マイナー頂点スタック)から、これらの三つの要素の選択もちろん、安定性を損なうません。しかし、N / 2のために - 1、N / 2 - 2、...親要素を選択された1が不安定になります。交換要素の親交換後ろにN / 2の可能が経過し、第1のN / 2 - 同じ要素の後ろに親ピアに1が切り替わっていない、同様にこれら2つの要素間のその後の安定性それは破壊されています。だから、ヒープソートは安定ソートアルゴリズムではありません。
ヒープソートの詳細、会場:ヒープソート
要約すると、それが結論付け: 選択ソート、クイックソート、シェルソート、ヒープソート安定ソートアルゴリズムではなく、バブルソート、挿入ソート、ソートや基数ソートマージ安定したソートアルゴリズムを
不安定なソートアルゴリズムは以下のとおりです。高速で、希望、選挙、ヒープ。