我有许多并行计算问题,我不知道该怎么做。
为了概念化这个问题,我将给出一个真实的例子。我有一副纸牌(1-9),我将它们洗牌。我画了3张牌,然后把最低的牌放在桌子上,然后我画另一张牌并放置最低牌等等。
我知道如何连续执行此操作,但我想知道是否有一种很好的方法可以并行执行此操作。一个例子是:
问题:
8 2 5 3 9 7 6 1 4
解决方案:
2 3 5 7 6 1 4 8 9
我认为每个号码可以前进两次,然后返回任意次,但我仍然无法找到一种并行的方法。我应该在第一个线程中以串行方式运行它,还是在CPU上执行它?
谢谢!
答案 0 :(得分:-1)
在考虑了一段时间之后,我决定最快的解决方案是迭代每个元素并在下一个元素较小时执行交换,但在第一组交换后并行执行第二组交换,例如只需要超过n + 1或+2次操作即可实现双重交换。只需几次操作就可以支持更大的牌。