使用堆查找未排序数组的中位数

时间:2019-08-04 10:01:54

标签: median binary-heap

有没有一种方法可以使用堆来查找未排序数组的中位数?如果有可能,是否比使用排序然后找到中位数更有效?请帮助我。

1 个答案:

答案 0 :(得分:1)

这里的技巧是使用两个堆,其中一个是min-heap,另一个是max-heap。我不会详细介绍,但是以下几点足以实现所需的算法。

  1. 最小堆的顶部是大于或等于均值的最小元素
  2. 最大堆的顶部是小于或等于均值的最大元素。

现在要问第二个问题,只有当您想找到运行中的中值(即每次在数组中插入一个新元素之后才找到中值)时,它才有效。

如果您只想一次计算所有数组元素的中位数,那么排序将是一个好主意。

希望这会有所帮助。