我正在写一个程序来生成一堆数据。我想找出这些数据的百分位数。
最明显的方法是将数据存储在某种排序的容器中。有没有haskell库提供自动排序的容器,并提供对任意索引的快速随机访问?
另一种方法是使用无序容器并在末尾执行排序。我不知道会不会快一点。不管怎样,我们仍然需要一个提供快速随机访问的容器。(也许是一个数组……)
建议?
(另一种选择是构建直方图,而不是将整个数据集保存在内存中。但由于目标是非常精确地计算百分位数,我不愿意走这条路。我也不知道我的数据范围,直到我生成它…)
最佳答案
有没有haskell库提供自动排序的容器,并提供对任意索引的快速随机访问?
是的,这是你以前的好作品。请参见Data.Map
和“索引”类别下的其他函数。elemAt
不提供这些功能,但您可以用Data.Set
来模拟它。