美文网首页
查找数据流中的中位数——各种数据结构的效率比较

查找数据流中的中位数——各种数据结构的效率比较

作者: KardelShaw | 来源:发表于2017-01-01 15:05 被阅读0次

在数据流中查找中位数,需要动态容器保存。其中涉及到插入操作和查找操作。


综上得知,采用AVL树和最大最小堆来实现是较为理想的。但是AVL树没有现成的函数库,需要自己实现,比较困难。但我们却可以利用C++的STL函数push_heap、pop_heap以及vector实现堆。

那么如何用最大堆和最小堆来寻找中位数呢?
思路是这样的,把数据流的数据分为前后两部分,前面一部分用最大堆实现,后面一部分用最小堆实现,并且最大堆的所有数都小于最小堆的最小值。最大堆的第一个数就是前一部分的最大值,最小堆的第一个数就是后一部分的最小值。中位数就是这两者的平均值(当数据总量为偶数时),或者两者其中之一(当数据总量为奇数时)。

相关文章

网友评论

      本文标题:查找数据流中的中位数——各种数据结构的效率比较

      本文链接:https://www.haomeiwen.com/subject/ydkivttx.html