我刚刚读过该算法是否仍可以视为二进制搜索算法?并回顾了几年前,我写了一个索引器/搜索日志文件,以按日期/时间窗口在大型纯文本文件中查找日志条目。
在这样做的同时,我决定尝试插值搜索(我不知道那是什么,我自己偶然发现了这个想法)。然后出于某种原因,我继续采用交替插值步骤与二进制拆分步骤的想法:在步骤0上,我将进行插值以确定测试点,然后在步骤1上,我将采用精确的中点等。
然后,我使用纯插值搜索,纯二进制搜索和组合尝试对系统进行了基准测试。在找到一组随机选择的时间之前,在时间和所需测试数量上,交替方法无疑是赢家。
受链接问题的启发,我只是快速搜索了“交替插值搜索和二进制搜索”,却一无所获。我还尝试了“对冲插值搜索”,如对某个答案的评论所建议的那样。
我偶然发现了一个已知的东西吗?对于某些类型的数据,它有更快的速度吗?日志文件通常在时间上很大(例如1-2 GB的文本,可能要搜索1000万行),并且日期/时间在其中的分布非常复杂,包括大量的活动,一般的高峰时间和安静时间。我的基准测试是从均匀分布的目标时间中采样得出的。