插值查找
基本原理
查找前数组必须排序(前提)
1、插值查找类似二分查找,但是插值查找每次从自适应mid处开始查找
2、二分查找,low表示左索引,high表示右索引

3、插值查找

注意事项
1、对于数据量大,关键字分布比较均匀查找来说,采用插值查找快
2、分布不均匀,不一定比二分查找快
代码
public class InsertValueSearch {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int findKey = insertvalueSearch(arr,0,arr.length-1,7);
System.out.println(findKey);
}
public static int insertvalueSearch(int[] arr, int left, int right, int findVal) {
if (left > right || findVal < arr[0] || findVal > arr[arr.length - 1]) {
return -1;
}
// mid自适应
int mid = left + (right - left) * (findVal - arr[left]) / (arr[right] - arr[left]);
int midVal = arr[mid];
if (findVal > midVal) {
return insertvalueSearch(arr, mid + 1, right, findVal);
} else if (findVal < midVal) {
return insertvalueSearch(arr, left, mid - 1, findVal);
} else {
return mid;
}
}
}
本文深入探讨了插值查找算法的基本原理与实现细节,对比二分查找,插值查找通过自适应mid点提高查找效率,尤其适用于数据量大且分布均匀的情况。文章详细解释了插值查找的代码实现,包括递归查找过程及边界条件判断。
777

被折叠的 条评论
为什么被折叠?



