我需要一个并行算法(成本最优)来检查给定的n个数字序列是否已排序。
答案 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)。