What would be complexity? Its all depends how do you merge N arrays of M size!
マージの複雑さ:
- 2つのソートされたサイズの配列のマージ
M
は順番に行われます。したがって、このステップの複雑さはO(2M)です。
ここN rows
でeach row is sorted
、要素が含まれていM
ます。
(線形にマージする)のように行う場合:
- 最初に2つの行をマージします-中間になります
2M size sorted array
。
2M array
別のmatixとマージしrow of N size
ます-あなたは得るでしょう3M size sorted array
。
takes N steps
この方法でマージしcomplexity would be O(N*M)
ます。
より良い方法(分割統治法):
最初に2つの連続する行のすべてのペアをマージします(1,2)、(3,4)これにより、2MサイズのN/2ペアが得られます。次のステップでペアワイズでマージします。以下に説明するように。
最初に2行とのペアを作成しmerge all N/2 pairs first and merge them
ます。
例:ペアrow(1,2); 行(3,4); row(5,6)......取得し= N/2 pairs each of 2M size
ます。
- 次のステップで、
make pair of two merged arrays each of size 2M from previous step
それらをマージします- get N/4 sorted array of 4M size
((2Mと他の2Mアレイのマージ-> 4Mで、複雑さはO(2M + 2M)= O(4M))
このすべての中間体を段階的にマージしますsorted arrays util you gets a single sorted array of size N*M
。そして今回の複雑さは合計としてM*N * log(N)steps required is log(N)
になります。
マージソートとその複雑さを学ぶことをお勧めします。