用于检查序列是否已排序的并行算法

时间:2011-02-17 09:12:25

标签: multithreading algorithm sorting parallel-processing

我需要一个并行算法(成本最优)来检查给定的n个数字序列是否已排序。

1 个答案:

答案 0 :(得分: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)。