簡體   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