문제

a의 구현을 찾고 있습니다 빨간색 나무 C#에서 다음과 같은 기능이 있습니다.

  • O (log n)에서 검색, 삽입 및 삭제.
  • 회원 유형은 일반이어야합니다.
  • 지원 비교 (t), 정렬 용 T 다른 필드에 의해.
  • 나무를 검색하는 것은 특정 필드와 함께 있어야하므로 허용되지 않습니다. T, 그러나 필드 유형을 정렬 할 수 있습니다.
  • 검색이 정확한 가치가 아니 어서는 안됩니다. 낮은/더 높은 검색을 지원해야합니다.

고맙습니다.

도움이 되었습니까?

해결책

당신은 주로 방금 묘사했습니다 SortedDictionary<T, U>, 다음으로 최저/가장 높은 가치 바이너리 검색을 제외하고, 많은 어려움없이 스스로 구현할 수 있습니다.

특정 이유가 있습니까? SortedDictionary 당신에게 불충분합니까?

다른 팁

C5 Collection Libs에서 트리 셋을 찢습니다.

이것은 정확히 PowerCollection의 순서대로 정렬됩니다. 시작 키/엔드 키를 설정하고 해당 범위의 모든 값을 스캔 할 수있는 기능을 추가하여 SortedDictionary (제네릭의 빨간색 검은 트리)와 거의 동일합니다.

SortedDicionary는 컬렉션의 시작 부분에서 시작하는 getEnumerator () 함수 만 노출 할 수 있으며 movenext () 호출 만 허용하므로 LINQ를 사용하더라도 마법이 일어나지 않습니다. 처음부터 시작하여 모든 싱글에서 표현식을 실행합니다. LINQ 표현식과 일치하는 사람들을 찾을 때까지 순서대로 노드.

OrderedDictionary에는 특정 키 또는 이전에 열거자를 가져 오는 기능이 있으며 O (log n)에서 조회하는 기능이 있습니다.

그래도주의 사항 : PowerCollections의 열거 자 정렬자는 "수율"을 사용하여 구현되며 메모리 사용 및 열거 성능은 최소 O (N^2)입니다 ... 기존 열거자를 구현하도록 직접 구현을 변경할 수 있습니다. 그리고이 두 가지 문제는 사라집니다. 시간을 찾을 수 있다면 그 패치를 CodePlex에 제출하겠습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top