リニアソート
- 線形時間複雑であるソートソートアルゴリズムは、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)を実行することができなくなり、ソートするソートアルゴリズム線形であるには大きすぎることができません。
- 注文電話番号:などのアプリケーション