内容简介:文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!插值查找算法类似于二分查找,不同的是插值查找每次从自适应mid处开始查找。计算自适应mid
查找--插值查找(Java)
博客说明
文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!
介绍
插值查找算法类似于二分查找,不同的是插值查找每次从自适应mid处开始查找。
自适应
计算自适应mid
int mid = left + (right – left) * (findVal – arr[left]) / (arr[right] – arr[left])
代码
package cn.guizimo.search; public class InsertValueSearch { public static void main(String[] args) { int max = 100; int[] arr = new int[max]; for (int i = 0; i < max; i++) { arr[i] = i + 1; } int index = insertValueSearch(arr, 0, arr.length - 1, 100); if(index == -1){ System.out.println("未找到"); }else { System.out.println("下标为:"+index); } } public static int insertValueSearch(int[] arr, int left, int right, int value) { if (left > right || value < arr[0] || value > arr[arr.length - 1]) { return -1; } int mid = left + (right - left) * (value - arr[left]) / (arr[right] - arr[left]); int midValue = arr[left]; if (value > arr[mid]) { return insertValueSearch(arr, mid + 1, right, value); } else if (value < arr[mid]) { return insertValueSearch(arr, left, mid - 1, value); } else { return mid; } } }
注意的事项
- 对于数据量较大,关键字分布比较均匀的查找表来说,采用插值查找, 速度较快.
- 关键字分布不均匀的情况下,该方法不一定比折半查找要好
感谢
尚硅谷
万能的网络
以及勤劳的自己
以上所述就是小编给大家介绍的《查找--插值查找(Java)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Swift 5 字符串插值之美
- Swift 5 字符串插值-简介
- R_空间插值_必知必会(二)
- 实现opencv中常用的三种插值算法
- 另一种(Yet Another)三角形线性插值方法
- 木兰重生:与 Python 生态的兼容问题;字符串插值
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Think Python
Allen B. Downey / O'Reilly Media / 2012-8-23 / GBP 29.99
Think Python is an introduction to Python programming for students with no programming experience. It starts with the most basic concepts of programming, and is carefully designed to define all terms ......一起来看看 《Think Python》 这本书的介绍吧!