C#中的快速订单统计树或哪种DS更有效,SortedList提供相同的function?
我需要在C#代码中使用快速订单统计树 。 我知道唯一具有IndexOf ()方法并保持项目排序的数据结构是SortedList 。 不幸的是,它的插入复杂度是O(n),而不像SortedDictionary那样是O(Lg n)但是SortedDictionary没有IndexOf()。
我需要的方法只是Add ()和IndexOf ()
谢谢
可索引的跳过列表具有O(log n)插入,删除和IndexOf
。 不幸的是,在C#中实现跳过列表涉及一些权衡。
我没有构建可索引的跳过列表,但我确实讨论过在两篇不同文章中构建常规跳过列表:
- 跳过列表数据结构
- 更高内存效率的跳过列表
修改其中任何一个来进行索引都不应该非常困难。
我使用了一个很好的红黑树实现并实现了我自己的Order Statistic Tree 。 这是一个通用的DS。 因为它没有框架DS的所有通用属性,所以它对我的特定问题的工作速度提高了5倍。