我已经对集合(List)进行了排序,我需要始终对其进行排序.
我目前正在我的集合上使用List.BinarySearch,然后在正确的位置插入元素.我也尝试过每次插入后的排序列表,但性能不可接受.
有没有可以提供更好性能的解决方案?也许我应该使用其他收藏品.
(我知道SortedList但它仅限于唯一键)
解决方法
PowerCollections有一个OrderedBag类型,可能对你需要的东西有好处.来自文档
Inserting,deleting,and looking up an
an element all are done in log(N) + M
time,where N is the number of keys in
the tree,and M is the current number
of copies of the element being
handled.
但是,对于.NET 3.5内置类型,使用List.BinarySearch并将每个项目插入正确的位置是一个良好的开端 – 但是在内部使用数组,因此当您执行所有复制时,性能将下降插入.
如果你可以将插件分组到可以改进的东西,但除非你在所有插入后只能进行一次排序操作,否则如果可以的话,最好使用PowerCollections中的OrderedBag.