すべての要素が同じサイズnの配列があるとします。何がO(n)になりますか?線形であろうか?マージソートの実行時間::すべての要素が同じです
1
A
答えて
0
これは、アルゴリズムの実装方法によって異なります。
mergesortの標準的な "バニラ"実装では、配列をソートするのに必要な時間は、各ステップで必要とされるマージが線形時間を取るため、常にΘ(n log n)になります。
ただし、適切な最適化を行うと、これを時間O(n)で実行することができます。多くのマージソートの実装では、入力配列は連続的に変更され、より大きな範囲と大きい範囲がソートされ、マージ・ステップが発生すると、アルゴリズムは外部バッファを使用して2つの隣接ソート範囲をマージします。その場合、マージを行う前に、最初の範囲の最後の要素が2番目の範囲の最初の要素以下であるかどうかを確認してください。そうであれば、2つの範囲は既にソートされているので、マージは必要ありません。
この最適化を実行し、すべての要素がすでにソートされている配列をソートするとします。何が起こるのですか?さて、mergesortを呼び出すたびに、さらに2つの呼び出しが呼び出されます。返された後、ソートされた範囲の終点をチェックすることができ、すでにソート順になっていることに気づくでしょう。全体として、これはコールあたりO(1)作業を行うので、我々は、アルゴリズムの時間複雑さのために、この漸化式を有する:
T(N)= 2T(N/2)+ O(1)
を
これはO(n)に解決されるため、直線的な作業のみが行われます。
関連する問題
- 1. (C++)マージソートの実行時間
- 2. 変更されたマージソートの実行時間とマージソートの比較
- 3. モバイル上の同じ行にあるすべての要素
- 4. なぜ私のリストのすべての要素が同じ作成時間を持っていますか?
- 5. mysqlの時間が実際の行と同じではない
- 6. すべてのMVC3アプリケーションが同じ理由で実行時に失敗する
- 7. マージソートとクイックソートの実行時間の理解
- 8. 2つのtestNGテストメソッドを同時に実行し、同時に同じ時間に実行するタイミング?
- 9. box2d - すべてのFPSで同じ時間を計算する
- 10. 同じコードの2回目の実行時のPHP実行時間
- 11. mongodbの実行時間が異なる同じクエリ
- 12. 同じロジックでの実行時間の差異
- 13. 左の要素が折り返している間、右の要素を同じ行に残す方法は?
- 14. Objective-C:すべての配列要素の値が同じです
- 15. SQLiteの同じ列のすべての要素を追加
- 16. Java Callable Poolスレッドは、この同じ時間にすべてを行います
- 17. 配列のすべての要素に同じキーを置く
- 18. すべてのブックマークが同じ要素にリダイレクトされています
- 19. なぜjavascriptは要素をループしていますが、すべての要素に対して同時にjQuery関数を実行していますか?
- 20. 中間の要素はボックスの幅と同じです。
- 21. 同じプログラム、同じJVMですが、異なるマシン上でのメモリ要件と実行時間が大きく異なります - なぜですか?
- 22. Direction API - 同じルートの旅行時間
- 23. 同じPythonプロセス実行時間の大きな変化
- 24. これらのSQLクエリの実行時間は同じですか?
- 25. Amazon MWS APIがPartialUpdateを実行するすべてのXML要素が必要
- 26. グリッドビューで同じサイズの写真がすべて必要です。
- 27. 「ワープ内のすべてのスレッドは、同じ命令を同時に実行します。 GPUで?
- 28. 2つの要素を正確に同じ時間フェードします
- 29. コールバックで異なる時間に同じ要素をアニメーション化する
- 30. 同じ行と同じコンテナ内の中央揃え要素
あなたはどう思いますか? –
Mitch - いいえ、すべての要素が同一であるとは認められません。最終的に彼らはそうです。その場合、O(n)にする必要がありますか? – Neel
あなたはそのコメントを別の場所に送ることを意味しましたか?ミッチと呼ばれる人がコメントしたようには見えません。 –