알아야 할 기능적 사전 데이터 구조는 무엇입니까?
높이가 균형 잡힌 이진 트리와 그 시도는 좋은 만능 타협입니다. 또한:
이러한 접근 방식의 장단점은 무엇입니까?
균형 잡힌 이진 트리와 그 시도는 원자 키에 대한 만능 타협입니다. 시도는 문자열 키와 같이 시퀀스 인 키와 동일합니다.
패트리샤 트리는 몇 배 더 빠를 수 있지만 정수 키만 허용합니다.
해시 시도는 균형 잡힌 이진 트리보다 몇 배 빠를 수 있습니다. 특히 해싱이 비교보다 저렴하고 다형성에 오버 헤드 (예 : .NET의 문자열)가 있고 힙에 포인터를 쓰는 것이 빠르면 (예 : JVM 및 CLR과 같은 VM) 기능적 언어보다는 명령형 언어에 최적화 됨). 해시 시도는 또한 최적화로서 돌연변이의 내부 사용을 허용합니다.
적-검은 나무는 높이 균형이 잡힌 나무에 비해 큰 이점이 없지만 효율적인 결합, 교차 및 차이를 허용하지 않는다는 큰 단점이 있기 때문에 덜 중요합니다.
마찬가지로 손가락 나무는 실제로 더 나쁘지 않습니다.
보다 필수적인 데이터 구조를 사용하는 것이 언제 합리적입니까?
사전이 한 번 채워지고 조회에만 사용되는 경우 (예 : 고정)
성능이 필요할 때 (.NET과 같은 적절한 해시 테이블 Dictionary
은 일반적으로 일반 순수 기능 사전보다 10-40 배 빠릅니다).
순전히 기능적인 약한 사전이 없기 때문에 약한 사전이 필요한 경우.