나는이 논문을 읽고있다. making B+-trees cache conscious in main memory. 섹션 3.1.2에서 저자는 CSB + 트리 노드 내에서 검색하는 몇 가지 방법을 설명합니다.노드 내 CSB + 트리에서 검색
da 기본 접근법은 기존의 while 루프를 사용하여 간단히 이진 검색을 수행하는 것입니다.
균일 방법은 사용되는 모든 키를 가정 if-then-else
문으로 while 루프를 전개, 코드 확장 통해서이다.
저자는 최대 9 개의 키가있는 노드를 검색 할 때 다음과 같은 예를 보여줍니다. 5 키가 실제로 존재하는 경우
그래서 왜 다음 트리에 더 많은 비교를해야합니다 : 또한, 우리는이 트리를 탐색 할 수 : 노드의 수는 키의 위치가
4 / \ 2 6 /\ /\ 1 3 5 8 /\ 7 9
은 그런 혼란 일부 오는
if
시험에 사용되는 대표 정확히 비교. 반면에 오른쪽 대신에 가장 깊은 하위 트리를 배치하는 전개는 일부 브랜치에서 비교를 필요로합니다.
6
/ \
4 8
/\ /\
2 5 7 9
/\
1 3
,
우리는 우리가 다섯 유효한 키를 알고 있었다, 우리는 나무를 하드 수있는, 평균적으로 사용 2.67 비교보다는 3
어떻게 2.67이 나옵니까?
힌트를 보내 주시면 감사하겠습니다. 또한 코드 확장 지식을 안내하는 링크가 도움이 될 것입니다.
사실, 필자는 여기에서 필사 될 때 일부 주요 정보가 생략되었을 수 있으므로 질문을하는 것이 적절한지 여부를 확신하지 못합니다 (질문을 다시 포맷해야 할 수도 있음). 나는 그저 종이를 읽은 누군가가있을 수 있기를 바란다.
감사
순진한 질문인지는 모르겠지만 예제에 표시된 평균값은 2.67보다는 2.8입니다. – manuzhang
답변을 업데이트했습니다. 이제 우리는 2.67 비교가 필요한 이유를 정확하게 설명합니다. –