2012-04-02 54 views
2

我有一個重建操作,它由構建一些鍵/值對組成。 關鍵是Double類型。 我每次有1對9對。 然後我需要按鍵的順序檢索值。c#快速排序和檢索少量的鍵值對

所以我的問題是什麼是實現這組對以實現所有操作的最佳性能的最佳方式?

在此先感謝

+0

沒有ü嘗試什麼嗎?如果你嘗試了一些,你可以弄明白。 – DarthVader 2012-04-02 14:08:47

+0

有了這麼少的數據,實際上並不重要。只需使用默認的'Sort'方法的內置容器並將其稱爲一天即可。 – FishBasketGordo 2012-04-02 14:12:48

回答

2

爲什麼要討論排序算法,.Net Framework已經有效的內置了99.9999%*可行的案例。

SortedList<double, T>可能是你最好的選擇,除非你有重複的「鑰匙」,然後只需用一個List<Tuple<double,T>>並調用Sort或使用OrderBy當你想要的結果。

除非您一次進行數以百萬計的這些排序操作,否則10件或更少的東西根本不算什麼。

*相對誇張。

+0

非常感謝您提供非常快速的答案。 – eran 2012-04-02 14:21:53

5

您可以使用SortedList或SortedDictionary。

但由於四捨五入問題,使用double作爲關鍵字似乎很危險。
看看你是否可以用decimal代替它,它在Equals()部門更可靠。

+0

+1,一些具有double的奇數邊緣情況可能導致鍵控數據結構出現問題。 – user7116 2012-04-02 14:12:07

+0

感謝您的建議。將與上面建議的SortedList 一起應用 – eran 2012-04-02 14:23:51

0

像這樣的事情也許

var sorted = from k in yourContainer.Keys 
      orderby yourContainer[k] ascending 
      select k; 
0

double是不是一個很好的候選人爲key

但是如果你想要的方式來使用它,可以只使用一個Dictionary<double, ..something..>

SortedList<double, ..something..>