C#或a中的快速顺序统计树什么DS比SortedList提供相同功能更有效?

C#或a中的快速顺序统计树什么DS比SortedList提供相同功能更有效?,c#,data-structures,C#,Data Structures,在我的C#code中需要一个快速的顺序统计树。我所知道的唯一一个具有IndexOf()方法并保持项目排序的数据结构是SortedList。不幸的是,它的插入复杂度是O(n),不像SortedDictionary那样是O(Lg n),但是SortedDictionary没有IndexOf() 我需要的方法是添加和索引 谢谢一个有O(logn)的插入、删除和索引。不幸的是,在C#中实现跳过列表需要一些权衡 我没有建立一个可索引的跳过列表,但我在两篇不同的文章中讨论了建立一个常规跳过列表: 修

在我的C#code中需要一个快速的顺序统计树。我所知道的唯一一个具有IndexOf()方法并保持项目排序的数据结构是SortedList。不幸的是,它的插入复杂度是O(n),不像SortedDictionary那样是O(Lg n),但是SortedDictionary没有IndexOf()

我需要的方法是添加和索引

谢谢

一个有O(logn)的插入、删除和
索引
。不幸的是,在C#中实现跳过列表需要一些权衡

我没有建立一个可索引的跳过列表,但我在两篇不同的文章中讨论了建立一个常规跳过列表:

修改它们中的任何一个来建立索引应该不会非常困难。

我使用了一个并实现了。这是一个通用的DS。
因为它没有框架DSs的所有通用属性,所以在解决我的特定问题时,它的运行速度要快5倍。

为什么不为SortedDictionary编写自己的IndexOf()扩展方法呢?当然,这将是非常低效的O(n)…只需迭代所有项请指定所有操作的复杂性(添加、删除、按值搜索、按索引搜索)-这将使查找匹配的数据结构更加容易。为什么您需要知道排序字典中项的索引?对于数据结构来说,这并不是一个真正有意义的操作,当然这就是为什么它没有方法的实现。我想说的是,在处理集合时,您更可能只是在处理代码,而不使用索引。@Adriano,问题是要实现O(lg n)复杂度的IndexOf(),我需要访问SortedDictionary使用的底层RBTree,我不知道如何访问它。@Servy,了解IndexOf()是一种常见的需要在排序集合中,正如您所提到的,它已经在SortedList(一种优先级队列)中实现。我的问题是SortedList.Insert()速度慢。我试图解决的问题是,通过插入排序对数组进行排序需要执行的移位数,这需要实现顺序统计树。