插值查找算法

简介: 插值查找算法

插值查找原理:


1)插值查找算法类似于二分查找,不同的是插值查找每次从自适应mid处开始查找。


2)将折半查找中的求 mid 索引的公式 , low 表示左边索引 left, high 表示右边索引 right,key 就是目标元素的值findVal


ca9b5a4aeaed2f3b8a254eb95df7a0bf_8395066ce44b4adbbf0e57c9f066e837.png


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]);


其实我们只要会二分查找就很容易学会插值查找,我们只需要将mid的公式替换成上述即可。


在这里我们就不过多赘述二分查找的使用了,若有不了解二分查找算法的可以关注博主的另一篇关于二分查找算法的文章:http://t.csdn.cn/CZMEC


这里我们直接实现插值查找:


// 编写插值查找算法
    // 插值查找算法去也要求数组是有序的
    public static int insertValueSearch(int arr[], int left, int right, int findVal) {
        // findVal < arr[0] || findVal > arr[arr.length - 1]
        // 必须需要,否则可能存在越界风险
        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;
        }
    }
目录
相关文章
|
5月前
|
算法 计算机视觉
图像处理之三种常见双立方插值算法
图像处理之三种常见双立方插值算法
35 2
|
5月前
|
算法 C语言 计算机视觉
图像处理之图像快速插值放缩算法
图像处理之图像快速插值放缩算法
35 0
|
6月前
|
编解码 算法 计算机视觉
基于FPGA的图像最近邻插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
基于FPGA的图像最近邻插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
|
6月前
|
算法 计算机视觉 Python
python 插值算法
最近在做时间序列预测时,在突增或者突降的变化剧烈的情况下,拟合参数的效果不好,有用到插值的算法补全一些数据来平滑剧烈变化过程。还有在图像处理中,也经常有用到插值算法来改变图像的大小,在图像超分(Image Super-Resolution)中上采样也有插值的身影【2月更文挑战第8天】
79 2
|
6月前
|
算法
MATLAB | 插值算法 | 一维interpl插值法 | 附数据和出图代码 | 直接上手
MATLAB | 插值算法 | 一维interpl插值法 | 附数据和出图代码 | 直接上手
212 0
|
6月前
|
算法
MATLAB | 插值算法 | 二维griddata插值法 | 附数据和出图代码 | 直接上手
MATLAB | 插值算法 | 二维griddata插值法 | 附数据和出图代码 | 直接上手
459 0
|
6月前
|
算法
MATLAB | 插值算法 | 一维Lagrange插值法 | 附数据和出图代码 | 直接上手
MATLAB | 插值算法 | 一维Lagrange插值法 | 附数据和出图代码 | 直接上手
184 0
|
11月前
|
算法 数据处理
数据拟合、参数估计、插值等数据处理算法
数据拟合、参数估计、插值等数据处理算法
137 0
数据拟合、参数估计、插值等数据处理算法
|
6月前
|
算法
【MATLAB】史上最全的5种数据插值算法全家桶
【MATLAB】史上最全的5种数据插值算法全家桶
103 0
基于亚奈奎斯特采样和SOMP算法的平板脉冲响应空间插值matlab仿真
基于亚奈奎斯特采样和SOMP算法的平板脉冲响应空间插值matlab仿真