我正在寻找具有以下属性的类似列表的数据结构:
DataStructure<T>
,其中T
是通用的T
被认为相等的IComparable<T>
的多个不同实例同时出现在列表中;他们的订单可以是任意的(甚至改变),但他们必须在&#34;较小的&#34;之后。 T
以及之前&#34;更大&#34;的实例T
O(log(n))
插入时间复杂度(或更快)O(log(n))
检索时间复杂度(或更快)O(1)
时间复杂度O(1)
时间复杂度的元素的前任/后继者的可能性我不关心删除时间的复杂性,因为元素只需要很少删除。我也不关心空间复杂性。
我知道没有数据结构可以满足所有属性,但是BCL中的那些(看起来他们可以做我最初需要的东西)似乎有太多的缺点:
SortedSet<T>
不允许IComparable<T>
(2)认为相同的多个实例,并且没有前任/后续函数(6)SortedSet<T, List<T>>
(只有一个&#34;代表&#34; T
的索引实例)需要相当多的(丑陋的)代码,并且仍然没有前任/后继功能(6 )SortedList<T, T>
插入速度太慢(3)SortedDictionary<T, T>
不允许IComparable<T>
(2)认为相同的多个实例,并且不允许直接访问第一个/最后一个元素(5),也不允许使用前任/后继函数(6)List<T>
并保持其排序可能是一种选择,但由于实施工作和可能性能不佳,我宁愿使用内置的东西(7)