Algorithm 找到一个平行的中间值

Algorithm 找到一个平行的中间值,algorithm,parallel-processing,Algorithm,Parallel Processing,如果你有一个庞大的数字和一百台电脑, 你如何找到这些数字的中位数 使用选择算法 将数字数组拆分为100个分区 每个处理器都应使用通用枢轴将阵列拆分为两组(左/右) 然后,每个处理器应将这两个组的大小发送给组长 领导者应该计算出哪一组更小,并广播一条消息,以摆脱其中一组 返回步骤2,直到找到中间值 此解决方案的平均运行时为O(n) 为了使O(n)渐近运行时,每个处理器应将数字分成5个元素的组,找到每组的中值 (使用插入排序)并将这些中间值发送回引线,引线将选择这些中间值的中间值(使用相同的算法),

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

使用选择算法

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


    阅读维基文章-

    +1,但我想你的意思是说,不是选择排序。@MrOhad,我不明白。领导计算哪一组更小,并广播一条消息以摆脱其中一组?为什么?有人能澄清这个答案吗?尤其是第四步?是否从100个分区中的每个分区中删除一项?或者有一半的项目被删除了?@Hardbyte:领导者选择一个轴,所有处理器返回轴左右的元素数。领导者决定丢弃哪个组(两个组中较小的一个),并统计被丢弃的元素数。如果放弃左(右)轴,则增加(减少)轴。同样,处理器获得left vs.right的计数,但在其计数中保留以前丢弃的元素数。调整轴心,直到有一个元素(如果元素数量为偶数,则为两个,返回两个元素的平均值)或所有剩余元素相同。