我正在嘗試做一些非常簡單的事情,但似乎我不明白SortedDictionary
。如何在c#中正確使用SortedDictionary?
我試圖做的是以下幾點:
創建一些浮數排序我的項目排序的字典,所以我創建了一個字典,看起來像這樣
SortedDictionary<float, Node<T>> allNodes = new SortedDictionary<float, Node<T>>();
現在經過我添加項目,我想逐一刪除它們(每次刪除的複雜度應該是從最小到最大的O(log(n))。
我該怎麼做?我以爲只需要allNodes[0]
給我最小的,但它沒有。
更重要的是,它似乎像字典無法處理重複鍵。我覺得我正在使用錯誤的數據結構...
如果我有一堆節點,我想按它們的距離(浮點)排序,我應該使用其他的東西嗎?
字典鍵值必須是唯一的。我想你想使用列表>,因爲列表可以有重複的條目。然後使用LINQ將數據按照您希望它們的順序操作。 –
您是否想根據每個節點的某個值對一組節點進行排序,或者是否有某些特定原因需要使用「SortedDictionary」 ?如果是前者,只需在開始時收集的任何東西上使用LINQ'OrderBy'。 – Servy
我想插入和刪除O(日誌(n)),我的大部分工作是插入和刪除...哪個列表在O(N)中。和你的問題:排序是基於每個節點的一些價值。 – OopsUser