插值查找
插值查找
思路分析
原理介绍:
- 插值查找类似于二分查找,不同的是插值查找每次从自适应mid处开始查找。
- 将折半查找中的求mid的公式进行了改进如下:
- 说明:low相当于left,high相当于right,key就是要找的值targetVal
- 插值查找求mid代码为:
int midIndex = low + (high - low)*(key - a[low])/(a[high] - a[low]) - 相当于之前的$\frac{1}{2}$变成了与要查找的值有关的系数。改进了二分查找的:
int mid = left + (right - left)
图解:

最精髓的地方在于自适应的mid
注意事项:
- 对于数据量较大,关键字分布较均匀的查找表来说,采用插值查找,速度较快。
- 关键字分布不均的情况下,该方法不一定比二分查找要好。
代码实现
InsertValueSearch
1 | package com.yukinoshita.algorithm.search; |





