繁体   English   中英

频繁插入已排序的集合

[英]Frequent inserts into sorted collection

我已经对集合(List)进行了排序,我需要始终对其进行排序。

我目前正在我的集合上使用List.BinarySearch,然后在正确的位置插入元素。 我也尝试过每次插入后的排序列表,但性能不可接受。

有没有可以提供更好性能的解决方案? 也许我应该使用其他收藏品。

(我知道SortedList但它仅限于唯一键)

如果您使用的是.Net 4,则可以使用SortedSet<T>

http://msdn.microsoft.com/en-us/library/dd412070.aspx

对于.Net 3.5及更低版本,请查看SortedList<TKey,TValue>是否适合您。

http://msdn.microsoft.com/en-us/library/ms132319.aspx

PowerCollections有一个OrderedBag类型,可能对你需要的东西有好处。 来自文档

插入 ,删除和查找元素都是在log(N)+ M时间内完成的 ,其中N是树中键的数量,M是正在处理的元素的当前副本数。

但是,对于.NET 3.5内置类型,使用List.BinarySearch并将每个项目插入正确的位置是一个良好的开端 - 但是在内部使用数组,因此当您执行所有复制时,性能将下降插入。

如果你可以将插件分组到可以改进的东西,但除非你在所有插入后只能进行一次排序操作,否则如果可以的话,最好使用PowerCollections OrderedBag

尝试将插入聚合为批次,并仅在每批次结束时进行排序。

暂无
暂无

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

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