バケットソートと基数ソートは近いです。バケットソートはMSDからLSDに、基数ソートは両方の方向(LSDまたはMSD)で行えます。両方のアルゴリズムはどのように機能し、特にどのように違いますか?バケットソートと基数ソートの違いは何ですか?
答えて
RadixSort
とBucketSort
の初期パスはまったく同じです。要素は、最も大きな数字の桁数に応じて、増分範囲(例えば、0-10,11-20、... 90-100)のbuckets
(またはbins
)に入れられます。
しかし、BucketSort
はこれらの「バケット」を注文して1つの配列に追加します。しかし、RadixSort
は、さらに並べ替えを行わずにバケットを追加し、数字の2桁目(10桁目)に基づいてバケットを「再バケット化」します。したがって、BucketSortは 'Dense'配列の方が効率的ですが、RadixSortはまばらな配列をうまく扱うことができます。
バケットソートと基数ソートは、比較ソートではない一般的な考え方が似ているため、姉妹ソートアルゴリズムと似ています。また、両方とも実装では少し抽象的です。
基数ソート:
基数ベース(2進、8進、10進、等)を意味します。したがって、この並べ替えは数字用です(文字列でも使用されます)。各要素Eは、E Iがある範囲内にあるE K ... E E E 、似ている場合に動作します。 (通常0小数で0-9またはASCII文字で0-255のような塩基に)
それは、次いで、安定なサブソートアルゴリズムのKパスを使用して(これは安定あるいは基数ソート獲得しなければなりません数を並べ替えることができます。このサブソートアルゴリズムは、通常、ソートまたはバケットソートをカウントしますが、はそれ自体は基数ソートにはなりません。それはそれは、安定ソートアルゴリズムである(Kから0または0にkに)各パスで
をあらゆる数をシャッフルので
あなたは最上位の桁または最下位桁から開始することができます。
バケットソート:
それは小さなグループまたはバケットにアレイを分離し、それ自体にサブソートアルゴリズム又は再帰呼び出しを使用して個別にソートし、次いで結果を組み合わせます。たとえば、チームのバケツを追加して選手をソートし、ジャージー番号などでソートするか、1-30の範囲から1-10,11-20,21-30の3つのバケットにソートします。
結合ステップは、(マージソートとは異なります)です。ちょうど基数/塩基グループ/バケットのタイプ/インスタンスかもしれ
- (リンクされたリストの場合)元の配列に各バケットの要素をコピーするか、以前のバケツの尾部と各バケットの先頭に参加番号をソートしながら。したがって、あなたはバケツの修正インスタンスとしてMSDの基数と考えることができソート
バケツインプレース一種であるないけど安定ソートアルゴリズム。ただし、バケットソートの一部のバリエーションは安定していない可能性があります(安定していないサブソートアルゴリズムを使用している場合)
良い比較:) –
- 1. なぜ基数ソートが最上位桁でバケットソートできないのですか
- 2. 外部ソートと内部ソートの違いは何ですか?
- 3. ソートで-nと-gの違いは何ですか?
- 4. ソートとトポロジカルソートの違いは何ですか?
- 5. dxChartの「引数フィールド」のソート基準は何ですか?
- 6. このバケットソートの実装は何をしていますか?
- 7. フラグメントと基本クラスの拡張の違いは何ですか?
- 8. Perl 5の親と基底の違いは何ですか?
- 9. setとdidSetの基本的な違いは何ですか?
- 10. ToString()とConvert.ToString()の基本的な違いは何ですか?
- 11. dotnet cliとangular cli基本プロジェクトテンプレートの違いは何ですか?
- 12. jobconfとjobの基本的な違いは何ですか?
- 13. javascriptのvar関数と関数の違いは何ですか?
- 14. データ型変数と変数V2の違いは何ですか?
- 15. Seq関数とofList関数の違いは何ですか?
- 16. 関数と*関数の違いは何ですか?
- 17. MPI_ *関数とPMPI_ *関数の違いは何ですか?
- 18. コールバック関数と正規関数の違いは何ですか?
- 19. JS:関数式と関数式の違いは何ですか?
- 20. Volatile変数とAtomic変数の違いは何ですか?
- 21. スレッドエントリ関数と通常関数の違いは何ですか?
- 22. クラス変数とグローバル変数の違いは何ですか?
- 23. definePlugin変数とenv変数の違いは何ですか?
- 24. 定数の宣言とグローバルとの違いは何ですか?
- 25. Schemeでは、数値とオブジェクトの違いは何ですか?
- 26. setTimeoutと関数との違いは何ですか?
- 27. PTHREAD_PRIO_INHERITとPTHREAD_PRIO_PROTECTの違いは何ですか?次の関数で
- 28. WindowsDXとは何ですか? WindowsGLの意味と基本的な違い
- 29. $と$$の違いは何ですか?
- 30. `##`と `hashCode`の違いは何ですか?
この2つの方法の時間の複雑さが異なる理由を説明してください。つまり、なぜバケットソートO(n + k)ですが、基数ソートはO(nk)ですか? –
@ShaunBudhramこれは古い質問ですが、これを読んでいる人が知りたいのであれば。この説明から明らかなように、バケットソートはNを1回通過し、K個のバケットをマージします(バケット内の順序は任意です)。基数ソートは各バケットに1つずつ渡されますが、ここでは文字列のソートがより良い例になると思いますので、複雑なNのKパスを行います。 –
「BucketSortはこれらのバケツを注文します」とはどういう意味ですか?各バケットは別のアルゴリズムで並べ替えられていますか? 10秒ごとにグループ化すると、各バケットは完全にソートされないためです。 – mpen