방금 이 알고리즘을 이진 검색 알고리즘으로 간주 할 수 있습니까 ?를 읽었습니다 . 몇 년 전에 날짜 / 시간 창으로 큰 일반 텍스트 파일에서 로그 항목을 찾기 위해 로그 파일에 대한 인덱서 / 검색을 작성했음을 상기했습니다.
이 작업을 수행하는 동안 보간 검색을 시도하기로 결정했습니다 (이것이 무엇인지 알지 못했지만 아이디어 자체를 우연히 발견했습니다). 그런 다음 어떤 이유로 바이너리 바이너리 단계로 보간 단계를 번갈아 가며 계속 생각했습니다 .0 단계에서 테스트 포인트를 결정하기 위해 보간하고 1 단계에서 정확한 중간 점 등을 취합니다.
그런 다음 순수한 보간 검색, 순수한 이진 검색 및 조합 시도를 사용하여 시스템을 벤치마킹했습니다. 이 방법은 무작위로 선택된 시간을 찾기 전에 필요한 테스트 시간과 횟수에있어 확실한 승자가되었습니다.
연결된 질문에서 영감을 얻어 방금 "보간 보간 검색 및 이진 검색"을 빠르게 검색했지만 아무것도 찾지 못했습니다. 또한 답변 중 하나에 대한 내 의견에 제안 된대로 "헤지 보간 검색"을 시도했습니다.
알려진 것을 우연히 발견 했습니까? 특정 유형의 데이터에 더 빠르다는 이론적 근거가 있습니까? 로그 파일은 일반적으로 시간이 많았으며 (예 : 검색 할 천만 개의 행이있는 1-2GB의 텍스트), 날짜 / 시간의 확산은 많은 활동, 일반적인 피크 시간 및 조용한 시간으로 인해 복잡했습니다. 내 벤치 마크 테스트는 찾기 위해 목표 시간의 균일 한 분포에서 샘플링되었습니다.