美文网首页
插值查找

插值查找

作者: casual_v | 来源:发表于2019-11-05 18:22 被阅读0次

一、介绍

1、插值查找算法类似于二分查找,不同的是插值查找每次从自适应 mid 处开始查找。
2、将折半查找中的求mid索引的公式,low表示左边索引left,high表示右边索引right. key 就是前面我们讲的 findVal


在这里插入图片描述

3、int mid = low + (high - low) * (key - arr[low]) / (arr[high] - arr[low]) ;/插值索引/
对应前面的代码公式:

int mid = left + (right – left) * (findVal – arr[left]) / (arr[right] – arr[left])

4、举例说明插值查找算法 1-100 的数组

在这里插入图片描述

二、代码

public class InsertValueSearch {
    public static void main(String[] args) {
        int arr[] = {1, 8, 10, 89, 1000, 1000, 1234};
        int index = search(arr, 0, arr.length - 1, 89);
        System.out.println("index = " + index);
    }
 
 private static int search(int[] array, int left, int right, int key) {
    while (left <= right) {
        if (array[right] == array[left]) {
            if (array[right] == key)
                return right;
            else return -1;
        }
        int middle = left + ((key - array[left]) / (array[right] - array[left])) * (right - left);
        if (array[middle] == key) {
            return middle;
        }
        if (key < array[middle]) {
            right = middle - 1;
        } else {
            left = middle + 1;
        }
    }
    return -1;
}

三、插值查找注意事项:

  1. 对于数据量较大,关键字分布比较均匀的查找表来说,采用插值查找, 速度较快.
  2. 关键字分布不均匀的情况下,该方法不一定比折半查找要好

相关文章

  • 查找 --- 插值查找

    插值查找(Interpolation Search)是二分查找的优化,只是针对1/2的改进 ​

  • 查找算法

    查找算法 1顺序查找 2二分查找 2.1二分查找思路分析 2.2代码实现 3插值查找 3.1插值查找原理介绍: ​...

  • 插值查找

    思想:由于二分查找对于大量数据而查找首末位元素时会消耗更多的时间,效率低下。而插值查找便是将查找点选择改为自适应查...

  • 插值查找

    一、介绍 1、插值查找算法类似于二分查找,不同的是插值查找每次从自适应 mid 处开始查找。2、将折半查找中的求m...

  • 插值查找

    插值查找是对二分查找的一种改进,适用于均匀分布的有序表 代码基本上和二分查找一样,有修改的地方就是mid的获取在二...

  • 查找

    顺序查找 二分查找 插值查找 查找子数组最大和

  • 查找算法

    1.顺序查找法 改进后的顺序查找法 2.折半查找法 3.插值查找 插值查找其实是折半查找的升级版,在我们写折半查找...

  • 算法-查找-插值查找

    算法来源 对于插值查找,就是对于二分查找的优化,将二分查找中的mid = (low + high) / 2改为m...

  • 查找算法-插值查找、斐波那契查找

    3.插值查找 插值查找其实是折半查找的升级版,在我们写折半查找的时候不知道大家想过没有 为什么每次要折一半呢?1/...

  • JavaScript数据结构22—简单的查找算法

    以下算法包括了 顺序查找 插值查找 二分查找 斐波那契查找 输出 { index: 5, count: 10 }{...

网友评论

      本文标题:插值查找

      本文链接:https://www.haomeiwen.com/subject/ecyebctx.html