美文网首页
算法-查找-插值查找

算法-查找-插值查找

作者: MacXin | 来源:发表于2018-02-23 11:31 被阅读0次

算法来源

    对于插值查找,就是对于二分查找的优化,将二分查找中的mid = (low + high) / 2改为mid = low + (high - low) * (key - a[low]) / (a[high] - a[low])。插值查找是根据查找关键子key与查找表中最大最小记录关键字比较后的查找方法,核心在于插值计算公式(key-a[low])/(a[high] - a[low])。

算法分析

    时间复杂度依旧为O(logn)。

    对于表长较大,而关键字分部比较均匀的查找表来说,平均性能要比折半好很多。

    如果数组中的分部类似{1,100,200,1000,10000...10000}这种极端不均匀的数据,用插值法也不太合适。

javaScript:

function search(arr, key, left, right){

    while(left < right){

        if(arr[left] == key){

            return left

        }

        if(arr[right] == key){

            return right

        }

        let middle = left + (right-left)*((key-arr[left])/(arr[right]-arr[left]))

        middle = Math.floor(middle)

        if(arr[middle] == key){

            return middle

        }

        if(key < arr[middle]){

            return search(arr, key, left, middle-1)

        } else {

            return search(arr, key, middle+1, right)

        }

    }

    return -1

}

let arr1 = [0, 9, 11, 39, 68, 88, 101]

console.log(search(arr1, 88, 0, arr1.length-1))

相关文章

  • 查找算法

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

  • 算法-查找-插值查找

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

  • 插值查找

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

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

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

  • 四大查找算法

    在Java中,常用的查找算法有以下四种: 顺序查找; 二分查找; 插值查找; 斐波那契查找; 欢迎大家关注我的公众...

  • 查找 --- 插值查找

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

  • 查找

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

  • 查找算法

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

  • 17 基本查找算法:插值查找与斐波那契查找

    一、插值查找 原理 在介绍插值查找之前,首先考虑一个新问题,为什么二分查找算法一定要是折半,而不是折四分之一或者折...

  • 查找算法入门教程-插值查找

    我们学习了二分查找,本节我们来学习插值查找算法,在学习之前我们先来看看二分查找的不足之处 假设我有一组有序的线性表...

网友评论

      本文标题:算法-查找-插值查找

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