2012-04-02 9 views
2

キーと値のペアをいくつか構築する再構築操作があります。 キーはDouble型です。 私は毎回1から9組まで持っています。 し、キーの順番で値を取得する必要があります。c#少量のキー値ペアを高速でソートして取得する

私の質問は、すべての操作のための最高のパフォーマンスを達成するためにこのペアのセットを実装する最良の方法は何ですか?

ありがとうございました

+0

を使用することができますuが何をしようとしたのですか?あなたがいくつか試してみれば分かるかもしれない。 – DarthVader

+0

このような少量のデータでは、実際にどのように実装するかは関係ありません。組み込みのコンテナをデフォルトの 'Sort'メソッドで使い、それを1日と呼んでください。 – FishBasketGordo

答えて

2

ソートアルゴリズムを気にする理由は、.Net Frameworkには99.9999%*の実現可能なケースのための効率的なものが既に組み込まれています。

SortedList<double, T>あなたはその後、「キー」を重複していない限り、単にList<Tuple<double,T>>を使用してSortを呼び出すか、あなたは結果が欲しいときOrderByを使用し、おそらくあなたの最善の策です。

10個以下の項目は、一度に何百万もの並べ替え操作をしていない限り、まったく役に立たないものです。

*相対的な双曲線。このような

+0

非常に迅速な回答をいただきありがとうございます。 – eran

5

SortedListまたはSortedDictionaryを使用できます。

しかし、キーとしてdoubleを使用すると、丸めの問題のために危険に思えます。
代わりにdecimalを使用できるかどうかを確認するには、Equals()部門の方がはるかに信頼性が高いです。

+0

+1、2倍の奇数エッジのケースでは、キー付きデータ構造に問題が発生する可能性があります。 – user7116

+0

提案に感謝します。上記のようにSortedList と一緒に適用されます。 – eran

0

何かが多分

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

doublekeyとして有力な候補ではありません。

しかし、あなたは道でそれを使用したい場合は、単にDictionary<double, ..something..>または

SortedList<double, ..something..> 
関連する問題