Haskell:使用O(1)追加和O(1)索引的Datastruture?

栏目: 编程语言 · 发布时间: 7年前

内容简介:如果存储器服务,则C向量被实现为具有边界和大小信息的数组.当插入会增加超出大小的边界时,大小会加倍.这是O(1)时间插入的摊销(不是你所声称的O(1)),并且可以使用Array类型在Haskell中模拟得很好,可能有合适的IO或ST前置.翻译自:https://stackoverflow.com/questions/10439821/haskell-datastruture-with-o1-append-and-o1-indexing
我在 Haskell

中寻找一种支持快速索引和快速附加的数据结构.这是针对由递归引起的memoization问题.

从矢量在c中工作的方式(这是可变的,但在这种情况下应该无关紧要)似乎可以使用(摊销的)O(1)追加和O(1)索引的不可变向量(好吧,它不是,看到这个问题的评论).这在Haskell中是不可能的,还是应该使用Data.Sequence,它有(AFAICT无论如何)O(1)追加和O(log(min(i,n-i)))索引?

在相关的说明中,作为一个Haskell新手,我发现自己渴望得到一个实用,简洁的Haskell数据结构指南.理想情况下,这将对最实用的数据结构以及性能特征和指向Haskell库的指针进行相当全面的概述.似乎有很多信息,但我发现它有点分散.我问得太多了吗?

如果存储器服务,则C向量被实现为具有边界和大小信息的数组.当插入会增加超出大小的边界时,大小会加倍.这是O(1)时间插入的摊销(不是你所声称的O(1)),并且可以使用Array类型在Haskell中模拟得很好,可能有合适的IO或ST前置.

翻译自:https://stackoverflow.com/questions/10439821/haskell-datastruture-with-o1-append-and-o1-indexing


以上所述就是小编给大家介绍的《Haskell:使用O(1)追加和O(1)索引的Datastruture?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

Effective JavaScript

Effective JavaScript

David Herman / Addison-Wesley Professional / 2012-12-6 / USD 39.99

"It's uncommon to have a programming language wonk who can speak in such comfortable and friendly language as David does. His walk through the syntax and semantics of JavaScript is both charming and h......一起来看看 《Effective JavaScript》 这本书的介绍吧!

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具