package search;
/**
* @author chenyi
* @Description 插值查找
* @date 2022/2/16 9:53
*/
public class BinaryValueSearch {
public int solution(int[] arr, int l, int r, int target) {
if (l > r || arr[l]>target || arr[r]<target) {
return -1;
}
int m = l+(r-l)*(target-arr[l])/(arr[r]-arr[l]);
if (arr[m] < target) {
return solution(arr, m + 1, r, target);
} else if (arr[m] > target) {
return solution(arr, l, m - 1, target);
}
return m;
}
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int idx = new BinaryValueSearch().solution(arr, 0, arr.length-1, 9);
System.out.println(idx);
}
}
插值查找
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 查找概念 查找(Searching): 即根据给定的某个值,在查找表中确定一个其关键字给定值的数据元素(或记录)。...
- 查找算法: 静态查找:数据集合稳定,不需要添加、删除元素的查找操作 动态查找:数据集合在查找的过程中需要同时添加或...
- 除了排序,查找指定值也是常见的功能,所以非常有必要掌握一下相关算法。经典查找算法有顺序查找、二分查找、差值查找、斐...
- 版权声明:本文源自简书tianma,转载请务必注明出处:http://www.jianshu.com/p/a3bd...