2017-03-04 8 views
0

私はこのアルゴリズムがo(nlogn)の時間複雑さを持っていることを知っていますが、私たちがマージステップだけを話すならば、これは依然としてo(nlogn)ですか?または、それはo(logn)に還元されていますか? 2番目の答えは答えだと思いますが、まだ配列のすべての要素に触れなければならないので、複雑さは同じであると思われますmergesortのマージ・ステップの複雑さはどのくらいですか?

乾杯!

+1

これは、使用しているマージによって異なります。伝統的に誰もがO(n)マージを使います。私はO(lg n)マージを見て幸せ以上になります。 – silentboy

+0

あなたは絶対に正しいです。 「分割」ステップはo(logn)を取るステップであり、1つをマージするステップはo(n)である。私は時間の複雑さを混乱させていた。これは私の質問を解決します。ありがとう!!! – nelt22

+1

配列の分割ステップ時間の複雑さはO(1)です。問題は、トップダウンマージソートのlog2(n)レベル、ボトムアップマージソートのlog2(n)反復、および各レベルの再帰または各反復のマージのためのO(n)レベルを必要とするため、合計O(n log(n))である。 – rcgldr

答えて

0

「分割」ステップはo(logn)を取るものであり、1つをマージするのはo(n)であり、これは単にコメントを介して実現されます。

+1

分割ステップではO(log n)時間はかかりません。それには時間O(n)もかかります。 O(log n)係数は、すべてのレベルの再帰ですべてのマージを実行するために必要な作業を集計することによって発生します。 – templatetypedef

関連する問題