我已经查看了以下示例帖子(其中很多),但不幸的是,这些帖子都不符合我的要求:
以下是问题的描述。
我们有一个键/值元素列表(我希望现在避免使用术语'字典'),按值排序,其中任何给定元素的“值”可以随时更改并且频繁更改。一旦给定的值发生变化,我们需要再次按值对元素列表进行排序。重新排序完成后,我们需要知道列表BY KEY中每个元素的索引来计算每个元素的PERCENTILE。
换句话说,我们需要计算LARGE排序(按值)的键值/值元素列表中每个元素的PERCENTILE,其值快速变化。
显然,有一种“天真”的方式可以做到这一点,但是,考虑到值的变化次数,大量的键/值对,重新排序以及每次计算百分位数,将无法正常运作。
有没有人有这么快的算法(或启发式)?
答案 0 :(得分:0)
一种方法是使用散列表+平衡订单统计树。
哈希表获取密钥,并映射到树的节点。
树可以在O(log n)时间内执行更改值,获取节点等级等内容。