在新的Python 3.4中,他们引入了一个新的统计模块。除此之外,它还具有计算中位数的功能。
目前,该功能首先对数据进行排序,然后确定中位数。 如果您查看source code,则其中包含备注:
# FIXME: investigate ways to calculate medians without sorting? Quickselect?
有没有比当前使用的功能更快的方法来计算中位数? Python应该使用哪种算法来确定中位数?
答案 0 :(得分:0)
您可以使用min-max-median堆来查找恒定时间内的最小值,最大值和中值(并使用线性时间来构建堆)。如果您想了解更多关于使用堆来获取媒体的信息,请阅读min-max heaps
这是python
中的示例代码答案 1 :(得分:0)
最佳中位数发现算法需要线性时间,可以按如下方式实现: Python implementation of "median of medians" algorithm
对于小型集合,排序和搜索方法可以更快并减少开销,但此方法最适合大型数据集。