是否存在列表集合的.NET实现,以便插入和查找都是最坏情况的O(log(n))操作?默认的System.Collections.Generic.List'Insert'方法是O(n)操作。
通过列表集合,我的意思是类似数组的可扩展数据结构。 “查找”是指按索引访问。
我怀疑这可以通过平衡树来完成,但实现起来并非易事。
答案 0 :(得分:4)
我不知道.NET实现,但可能适合您的数据结构是Indexible Skiplist。它具有与平衡二叉树类似的O(lg n)性能,但在概念上更像是一个链表。
http://en.wikipedia.org/wiki/Skip_list
我认为用C#写一个不太难。
答案 1 :(得分:1)
C5 TreeSet应该为您提供具有这些特征的红色/黑色实现,包括索引访问。
答案 2 :(得分:0)
不知道.net框架中是否存在,但是你可以实现aa tree插入和搜索都是O(log n)。
答案 3 :(得分:-1)
如果您需要使用索引访问字段,则无法解决此问题。你可以使用SortedList,但是你得到O(n),或者你可以使用SortedDictionary,但是你会丢失类似数组的访问(通过索引)。