logo

マージソートの時間と空間の複雑さの分析

時間計算量 マージソートの O(n log n) 両方で 平均 そして 最悪の場合 。空間の複雑さ マージソート の上)

側面 複雑
時間計算量 O(n log n)
空間の複雑さ の上)

マージソートの時間計算量分析:

次の用語を考慮してください。



T(k) = k 要素のソートにかかる時間
M(k) = k 要素をマージするのにかかる時間

したがって、次のように書くことができます

文字列置換すべてのJava

T(N) = 2 * T(N/2) + M(N)
= 2 * T(N/2) + 定数 * N



これらの N/2 要素はさらに 2 つに分割されます。それで、

T(N) = 2 * [2 * T(N/4) + 定数 * N/2] + 定数 * N
= 4 * T(N/4) + 2 * N * 定数
。 。 。
= 2k* T(N/2k) + k * N * 定数

ls コマンド、Linux

要素が 1 つになるまで最大分割できます。つまり、N/2k= 1。 k = 対数 2 N



T(N) = N * T(1) + N * log2N * 定数
= N + N * 対数2N

したがって、時間計算量は次のようになります。 O(N * ログ 2 N)

したがって、最良の場合、最悪の場合、および平均的な場合の時間計算量は同じです。

jsセット

マージソートの空間複雑性分析:

マージソート があります 空間の複雑さ の上) 。これは、サイズの補助配列を使用するためです。 n 入力配列のソートされた半分をマージします。補助配列はマージされた結果を格納するために使用され、入力配列はソートされた結果で上書きされます。