2012-04-02 3 views
2

키/값 쌍의 일부 빌드 빌드로 reoccuring 작업이 있습니다. 키는 Double 유형입니다. 나는 매회 1에서 9 쌍을 가진다. 그리고 키의 순서로 값을 검색해야합니다.C# 빠른 정렬 및 소량의 키 값 쌍 검색

제 질문은 모든 작업에 대해 최상의 성능을 얻기 위해이 쌍을 구현하는 가장 좋은 방법은 무엇입니까?

미리 감사드립니다.

+0

이 유 것을 시도 않았기 사용할 수 있습니까? u를 시도해 보면 이해할 수 있습니다. – DarthVader

+0

이렇게 적은 양의 데이터만으로도 구현 방법은 중요하지 않습니다. 내장 된 컨테이너를 기본'Sort' 메소드와 함께 사용하고 하루 만 부르면됩니다. – FishBasketGordo

답변

2

. 정렬 알고리즘에 신경을 쓰는 이유는 닷넷 프레임 워크가 이미 99.9999 % * 개의 가능한 경우에 내장 된 효율적인 알고리즘을 가지고 있기 때문입니다.

SortedList<double, T>은 다음 "키"를 복제하지 않는 한 단지 List<Tuple<double,T>>를 사용하고 Sort를 호출하거나 결과를 할 때 OrderBy을 사용할 가능성이 가장 좋은 건입니다.

10 개 이하의 항목은 한 번에 수억 개의 이러한 정렬 작업을 수행하지 않는 한 전혀 없습니다.

* 상대적인 과장법. 이 같은

+0

매우 빠른 답변을 주셔서 대단히 감사합니다. – eran

5

SortedList 또는 SortedDictionary를 사용할 수 있습니다.

그러나 키로 double을 사용하면 반올림 문제로 인해 위험 해 보입니다.
decimal 대신에 Equals() 부서를 사용할 수 있는지 확인하십시오.

+0

+1, 두 배의 홀수 짝수의 경우 키 데이터 구조에 문제가 발생할 수 있습니다. – 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..>