繁体   English   中英

适当的类似列表的排序数据结构

[英]Appropriate list-like sorted data structure

我正在寻找具有以下属性的类似列表的数据结构:

  1. 通用的,即DataStructure<T> ,其中T是通用的
  2. 必须允许IComparable<T>认为相等的T多个不同实例同时出现在列表中; 它们的顺序可以是任意的(甚至改变),但他们必须跟从的“小”的实例T和之前的“大”的实例T
  3. O(log(n))插入时间复杂度(或更快)
  4. O(log(n))检索时间复杂度(或更快)
  5. 可能以O(1)时间复杂度访问第一个/最后一个元素
  6. 可以访问时间复杂度为O(1)的元素的前任/后任
  7. 可在不使用其他库的情况下使用

我不在乎删除时间的复杂性,因为仅需很少删除元素。 我也不在乎空间的复杂性。

我知道没有可以满足所有属性的数据结构,但是BCL中的数据结构(乍看之下它们似乎可以满足我的需要)似乎有太多缺点:

  • SortedSet<T>不允许IComparable<T> (2)认为相同的多个实例,并且不具有前任/后继功能(6)
  • SortedSet<T, List<T>> (只有一个“代表”的索引实例T )将需要相当长的一段额外的(丑陋的)的代码,仍然没有前任者/后继函数(6)
  • SortedList<T, T>插入速度太慢(3)
  • SortedDictionary<T, T>不允许IComparable<T> (2)认为相同的多个实例,并且不允许直接访问第一个/最后一个元素(5),也不具有前任/后继功能(6)
  • List<T>继承并保持其排序可能是一个选项,但是由于实现工作的努力和潜在的不良性能,我宁愿使用内置的东西(7)

我在俯视什么吗? 我的用例似乎没有其他相关的数据结构(我在这里这里等等)。 是否有我没有考虑的其他数据结构?

如果您愿意放松5和6,则可以使用TreeMap

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM