标签: algorithm
我有兴趣了解计算集合中元素百分位数的最快方法。集合是动态的 - 可以添加和删除元素,元素的值可以随时间变化。一个真实的例子是SO用户的声誉。在每个用户的前X%中计算X的最快方法是什么?
答案 0 :(得分:3)
如果你想要一个内存数据结构,你需要一个order statistics tree,它是二叉搜索树的增强版本。这支持在O(log(n))时间内以排序顺序,插入和删除方式查找第N个值。
如果您使用的是SQL数据库,那么在特定列上保留索引并使用top percent查询应该是有效的。