4

我正在编写一个将生成大量数据的程序。我想找到该数据的各种百分位数。

显而易见的方法是将数据存储在某种排序的容器中。是否有任何 Haskell 库提供自动排序并提供对任意索引的快速随机访问的容器?

另一种方法是使用无序容器并在最后执行排序。我不知道这是否会更快。无论哪种方式,我们仍然需要一个提供快速随机访问的容器。(一个数组,也许......)

建议?

(另一种选择是建立一个直方图,而不是将整个数据集保存在内存中。但由于目标是非常准确地计算百分位数,我不愿意走这条路。我也不知道我的范围数据直到我生成它......)

4

1 回答 1

5

是否有任何 Haskell 库提供自动排序并提供对任意索引的快速随机访问的容器?

是的,这是你的好老头Data.Map。参见elemAt«Indexed» 类别下的其他功能。

Data.Set不提供这些,但您可以使用Data.Map YourType ().

于 2013-06-23T12:13:12.947 回答