如何计算通过更改值排序的键/值元素的排序列表中每个元素的PERCENTILE

时间:2013-12-06 17:09:24

标签: performance algorithm sorting data-structures key-value

我已经查看了以下示例帖子(其中很多),但不幸的是,这些帖子都不符合我的要求:

以下是问题的描述。

我们有一个键/值元素列表(我希望现在避免使用术语'字典'),按值排序,其中任何给定元素的“值”可以随时更改并且频繁更改。一旦给定的值发生变化,我们需要再次按值对元素列表进行排序。重新排序完成后,我们需要知道列表BY KEY中每个元素的索引来计算每个元素的PERCENTILE。

换句话说,我们需要计算LARGE排序(按值)的键值/值元素列表中每个元素的PERCENTILE,其值快速变化。

显然,有一种“天真”的方式可以做到这一点,但是,考虑到值的变化次数,大量的键/值对,重新排序以及每次计算百分位数,将无法正常运作。

有没有人有这么快的算法(或启发式)?

1 个答案:

答案 0 :(得分:0)

一种方法是使用散列表+平衡订单统计树。

哈希表获取密钥,并映射到树的节点。

树可以在O(log n)时间内执行更改值,获取节点等级等内容。