2011-02-17 9 views

答えて

10

m個のスレッドの場合、各スレッドにn/m個の連続番号のチャンクに1つの番号の重複を付けます。各スレッドで、割り当てられている順序がソート順であることを確認します。すべてのサブシーケンスがソートされている場合、シーケンス全体がソートされます。

例:

[1, 4, 5, 6, 11, 42] => [1, 4, 5, 6*] and [6, 11, 42] with 2 threads 
[1, 4, 5, 6, 11, 42] => [1, 4, 5*], [5, 6, 11*] and [11, 42] with 3 threads 

*これは、この解決策は複雑さO(N/M)を有する1

の重なりです。

+0

境界要素を分割する前に(オーバーラップなしに)境界要素を確認すると効率的です。もちろん、複雑さがO(m +(n/m))になるため、スレッドの数が少ないほど効率的です。しかし、これはスレッドを起動する前に境界がソートされているかどうかを検証するためのより良い短絡コードを形成します。 –

関連する問題