0

是否有一个 java 库允许我通过添加/删除数据点来更新而不是重新计算大量数据样本集的分位数?我的猜测是,一个有效的算法应该花费恒定的时间进行更新(不是已经存在的点数的函数)。

列出了已知的算法,但没有办法从样本集中删除点:

这是一个示例问题:假设我想计算一组风车的任意但恒定的百分位风扇速度(作为风速的估计值)。风扇速度每隔几毫秒异步更新一次。这个库应该允许我一次更新一个风车的风速,而不必重新计算中位数。

4

2 回答 2

2

如果您维护数据的可更新排序表示,则只需使用数组的长度即可轻松高效地获取分位数。例如,如果您有 N 个元素,则中位数将位于位置 N/2,依此类推。当您在数据结构中插入一个新元素时,它仍然成立。效率仅取决于插入新元素。

于 2012-10-17T17:03:58.597 回答
1

您可以拥有多批数据。您可以结合这些批次的百分位数/四分位数来估算总和。好处是您可以有效地丢弃多个批次,而无需重新计算其他批次。

于 2012-10-17T16:46:00.457 回答