データ構造とアルゴリズム、略し - ソートアルゴリズム(2) - リニアシーケンシング

リニアソート

  • 線形時間複雑であるソートソートアルゴリズムは、O(N)であります
  • >削除結果 - バケットソート------>ポイントは、ソート用浴槽+をマージ
  • カウントシング------>パーツのキットは+カウント - >最初の計数統計を、次に取り出し、並べ替えを実装
  • 各ビットの基数ソート------>バケットソート
  • 思考のバケットソートは、分類データに使用することができます

 

バケットソート -データが複数の順序付けられたバケットに割り当てソートする、各バケットのデータは、その後、(安定性を確保するためにマージソートビン)を別々にソートされ、注文データに基づいて、各バケットアウト

  • データよりも大きい外部ソート(ディスクに保存されたデータ)に適した、メモリから、データはいくつかのセクションバレルに分割され、処理当たりバレル

シーケンシングをカウントする -データ項目のサイズを取得し、設定「サイズ範囲+1」がバケットは、バレル表し、N 0〜N-1桁に、各バケットで表されるデータ項目の数を計数しますバレルに対応し、その後、シーケンスはバケツに浴槽を合計し、最終的にはインデックスにそのソートした後、添字のカウントを取るために浴槽に対応するエントリからのデータによって、1で完全なバケット・カウントを取り、ソートが横断完了します。

  • ソートするn個のデータのデータ範囲kが使用カウント配列決定に適した、あまり大きくない場合にカウント配列データのみ、小さな範囲のシナリオで使用することができます。ソートするデータがこれに、相対的な大きさを変えずに、負でない整数に、他のタイプである場合、さらに、カウントのみ、非負整数をソートするソートすることができます。
  • 大学入学試験の得点ランキング:などのアプリケーション
  • 擬似コード
  • // 配列であり、nはアレイのサイズである、ソート数えます。配列に格納された非負の整数を想定しています。
    公共 ボイド countingSort(INT [] A、INT N-){
       IF(N - <= 1リターン
    
      // データの配列の範囲を探す
      int型マックス= A [ 0 ;]
       のためのINT I = 1 ; I <N-; ++ I){
         IF(MAX < A [I]){
          最大は = [i]は、
        }
      }
    
      INT [] = C 新しい新しい INT [+最大1 ]; // カウント配列Cの、インデックスのサイズ[0、最大]を適用
      するためのINT I = 0 ; I <= maxの; ++ I){
        C [I] = 0 ;
      }
    
      // 各要素の数をカウントし、Cが配置されている
      ためINT I = 0 ; I <N-; ++ I){
        C [I]] ++ ;
      }
    
      //は、順次蓄積
      するためINT I = 1 ; I <= maxの; ++ I)の{
        C [I] = C [I- 1 ] + C [i]は、
      }
    
      // 一時的アレイRした後、結果格納されたソート
      INT [] = R&LT 新しい新しい INT [N-];
       // ソートの鍵算出ステップ、ということを理解すべきビット難しい
      ためINT I = N - 1。 ; I> = 0 ; - Iは){
         int型のインデックス= C [A [I]] - 1。
        R [インデックス] = [I]。
        C [I]] - 
      }
    
      //はに結果の配列をコピー
      するためのINT I = 0 ; I <N-; ++ I){
        [I] = R [i]は、
      }
    }

 

基数ソート -長い項目がソートされているようでは、安定性を維持するためには、最後の1から始めて、あなたはプロセスがソートバケットやカウンティングソートすることができ、ソート、データ項目の並べ替えを押すたびに、あなたはシーケンシングを完了ソートは、完全に複雑であり、 O(K * n)は、kはビット数であります

  • 基数ソートソートするデータが必要とされる高いデータは、Bデータよりも大きく、それの残りの部分が低いことがあれば、あなたは、比較するために、別の「ビットを」アウト分割する必要があるが、また、プログレッシブ位置との関係もそれは比較になりません。また、各データ範囲は、そうでなければ、基数ソートの時間計算量はO(n)を実行することができなくなり、ソートするソートアルゴリズム線形であるには大きすぎることができません。
  • 注文電話番号:などのアプリケーション

 

おすすめ

転載: www.cnblogs.com/wod-Y/p/11968507.html