- 插值查找简介
- 实现(java)
- 时间复杂度
1.插值查找简介
- 有序表插值, 与自适应中间元素比较, 比中间元素小, 在左半区域查找, 比中间元素大, 在右半区域查找
- 数组必须有序
2.实现(java)
public class InsertSearch {
public static void main(String[] args) {
int[] arr = {5, 19, 21, 35, 40, 52, 63, 77, 82, 96};
int index = search(arr, 82);
if(-1 != index) {
System.out.println("查询成功, 元素位于数组第" + (index + 1) + "位");
}else {
System.out.println("查询失败");
}
}
public static int search(int[] arr, int key) {
int low = 0;
int high = arr.length - 1;
while (low <= high) {
int mid = low + (key - arr[low]) * (high - low) / (arr[high] - arr[low]);
if(key < arr[mid]) {
high = mid - 1;
}else if(key > arr[mid]) {
low = mid + 1;
}else {
return mid;
}
}
return -1;
}
}
3.时间复杂度
时间复杂度为O(log2n)
本文深入探讨了插值查找算法,一种高效的有序表搜索技术。文章详细介绍了算法的工作原理,通过自适应选择中间元素进行比较,实现了快速定位目标元素的目的。并提供了Java实现代码示例,最后分析了插值查找的时间复杂度,指出其平均情况下能达到O(log2n)的效率。
618

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



