并行查找中位数

时间:2010-07-23 08:09:08

标签: algorithm parallel-processing

如果你有一个庞大的数字和一百台电脑, 您如何找到数字的中位数?

1 个答案:

答案 0 :(得分:17)

使用选择算法。

  1. 将数字数组拆分为100个分区。
  2. 每个处理器应使用通用枢轴将阵列分成两组(左/右)
  3. 然后每个处理器应该将这两个组的大小发送给领导者
  4. 领导者应该计算哪个群体更小并且广播消息以摆脱其中一个群体。
  5. 返回第2步,直至找到中位数
  6. 此解决方案的平均运行时间为O(n) 为了使其成为O(n)的渐近运行时,每个处理器应将数字拆分为5个元素的组,找到每个组的中位数 (使用插入排序)并将这些中位数发送回领导者,领导者将选择这些中位数的中位数(使用相同的算法) 将是支点

    阅读维基文章 - http://en.wikipedia.org/wiki/Selection_algorithm