BCL引入了一组Immutable Collections http://blogs.msdn.com/b/bclteam/archive/2012/12/18/preview-of-immutable-collections-released-on-nuget.aspx
我想知道有什么区别ImmutableSortedSet
和原生的 FSharpSet
?两者的性能特征似乎相似。我也曾在某处看到过SortedSet
是作为红黑树实现的,所以我猜ImmutableSortedSet
做同样的事情。
fsharp的内部实现是什么map
? Is is 红黑树 http://en.wikibooks.org/wiki/F_Sharp_Programming/Sets_and_Maps#The_Set_Module如此处所述或AVL tree http://fdatamining.blogspot.co.uk/2010/08/reading-f-projects-part-ii-f-set.html正如这里发现的?
另外,为什么MSDN文档没有明确说明图书馆馆藏的实际数据结构是什么?我知道这些是实施细节并且即将改变。我的观点是,如果他们不想将库数据类型绑定到某种类型的众所周知的数据结构,他们至少应该提供所有方法在复杂性方面的性能签名的总结?
F# Set 和 Map 类型是使用 AVL 树实现的。
我不了解 MSDN 文档,您必须向 F# 团队询问:)
无论如何,红黑树和AVL树的主要操作具有相同的计算复杂度。在实践中,它们具有不同的性能特征,这可能会导致您为特定应用程序选择其中之一 - 红黑树具有更快的插入/删除速度,因为它们不需要对树进行太多的重新平衡,但需要进行检索由于 AVL 树对插入/删除执行了额外的平衡,因此速度更快。我想这就是为 F# Map 和 Set 实现选择 AVL 树的原因——Map/Set 通常创建一次(即不修改),然后重复查询。
https://en.wikipedia.org/wiki/Red%E2%80%93black_tree https://en.wikipedia.org/wiki/Red%E2%80%93black_tree
https://en.wikipedia.org/wiki/AVL_tree https://en.wikipedia.org/wiki/AVL_tree
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)