插值查找
插值查找的核心思想
关键词: 插值
在前面的二分查找法
里,中间值是简单的(low+high) / 2
。
假设你在英文字典查找单词apple,你会怎么查呢?很显然你不会从中间开始查找,而是有目的地往前或者往后去翻。
也就是说,枢轴不应该是绝对的中间值,而是应该根据查找值与最大最小值的关系去确认枢轴。
插值公式:
mid := (low + high) / 2
mid = low + (high - low) * 1/2
假设data位于中间值与high之间,则:
mid = low + (high - low) * (data-low) / (high - low)
代码实现
func MidSearch(arr []int,