package search;
import static java.lang.Math.max;
import static java.lang.Math.min;
public class InsertSearch {
public static void main(String[] args) {
int[] array = {1, 2, 3, 4, 5, 6, 7, 8};
// 适合分布均匀的数据
insertSearch(3, array);
}
public static int index(int n, int l, int r, int[] a){
return l + (n - a[l]) / (a[r] - a[l]) * (r - l);
}
public static void insertSearch(int n,int[] a) {
int l = 0;
int r = a.length - 1;
while (l <= r) {
int k = index(n, l, r, a);
// 防止下标越界
int x = max(l, min(k, r));
if (a[x] == n) {
System.out.println("查找成功");
return;
}
if (a[x] < n) {
l = x + 1;
}
if (a[x] > n) {
r = x - 1;
}
}
System.out.println("查找失败");
}
}
插值查找(Java)
最新推荐文章于 2024-02-27 16:07:02 发布
该篇博客介绍了一个名为`InsertSearch`的类,其中包含一个`index`方法用于计算插入排序搜索中元素的位置,以及一个`insertSearch`方法实现了插入排序搜索。通过示例展示了如何在已排序的数组中查找特定数值。如果找到目标值,程序会输出“查找成功”,否则输出“查找失败”。此算法适用于分布均匀的数据。
摘要由CSDN通过智能技术生成