2011-02-17 3 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 

*이 1.

용액에서 오버랩된다 복잡도 O (N/m)를 갖는다.

+0

경계 요소를 분할하기 전에 (겹침없이) 요소를 검사하면 더 효율적일 수 있습니다. 물론 복잡성이 O (m + (n/m))가되기 때문에 더 적은 수의 스레드에 대해 더 효율적입니다. 그러나 이는 스레드를 시작하기 전에 경계가 정렬되어 있는지 확인하기위한보다 나은 단락 코드를 형성합니다. –