[解決済み] 項目を挿入した後にリストをソートするのと、ソートされたリストに項目を追加するのでは、どちらが速いか?
2023-05-19 10:22:19
質問
ソートされたリスト(ソートするためにクイックソートを言う)がある場合、追加する値がたくさんある場合、ソートを中断し、それらを最後に追加し、その後ソートするか、バイナリチョップを使用してアイテムを追加しながら正しく配置する方がよいのでしょうか? 項目がランダムであるか、すでに多かれ少なかれ順序があるかに違いはあるのでしょうか?
どのように解決するのですか?
効果的にゼロからリストを構築するのに十分なアイテムを追加した場合、後でリストをソートすることによってより良いパフォーマンスを得ることができるはずです。
項目がほとんど順番に並んでいる場合、それを利用するために増分更新と通常のソートの両方を微調整することができますが、率直に言って、通常、トラブルに見合うものではありません。 (また、予期しない順序がアルゴリズムに多くの時間を取らせることがないようにするなど、注意する必要があります。 より長い にも注意する必要があります)。
インクリメンタルアップデートと通常のリストソートの両方はO(N log N)ですが、後ですべてをソートすることでより良い定数ファクターを得ることができます(ここでは、インクリメンタルアップデートがO(N)より速くリストアイテムをアクセスできるように、いくつかの補助的なデータ構造を持っていると仮定します...)。 一般に、インクリメンタル アップデートは常に完全な順序を維持しなければなりませんが、一度にまとめてソートすることはそうではないため、一度にまとめてソートすることは、順序をインクリメンタルに維持するよりもはるかに多くの設計上の自由度を持ちます。
もし何もなければ、高度に最適化されたバルクソートがたくさんあることを思い出してください。
関連
-
[解決済み] 2つのリスト(お互いを参照している)を全く同じ方法でソートする方法
-
[解決済み] 割り当て後にリストが予期せず変更されました。その理由と防止策を教えてください。
-
[解決済み] 辞書のリストを辞書の値でソートするにはどうしたらいいですか?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] List<T>をオブジェクトのプロパティでソートする方法
-
[解決済み] オブジェクトの属性に基づいてオブジェクトのリストを並べ替えるには?
-
[解決済み] Swift Betaのパフォーマンス:配列のソート
-
[解決済み] リスト/タプルを指定されたインデックスにある要素でソートするには?
-
[解決済み] なぜ[]はlist()よりも速いのですか?
-
[解決済み】固定長 6 int 配列の最速ソート
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] DPLLアルゴリズムはどのように動作しますか?[クローズド]
-
[解決済み] CLRSの相対的漸近成長に関する問題(表)の解き方について教えてください。
-
[解決済み] アルゴリズムの教科書では、ソートされた配列について「増加」ではなく「非減少」を使っているのはなぜですか?
-
[解決済み] クロスワードを生成するアルゴリズム[クローズド]について
-
[解決済み] Dijkstraのアルゴリズムによる負の重み付け
-
[解決済み] ハッシュテーブルは本当にO(1)になるのか?
-
[解決済み] ブルームフィルターを使用するメリットは何ですか?
-
[解決済み] 任意の2頂点間の全接続を求めるグラフアルゴリズム
-
[解決済み] トライ式と基幹トライ式のデータ構造の違いは何ですか?
-
[解決済み] ヒューリスティックとアルゴリズムの違いは何ですか?