查字典的查找算法

学习对分查找与顺序查找后,我们会发现对分查找的效率要高很多,对比100000的数据,顺序查找最糟糕的情况要查找10000次,而对分查找只需查找:int(log(100000))+1(即17次),但是我们会发现查字典,如查单词:art,并不是从26个英文字母的中间字母查起的,既然对分查找效率这么高,为什么不用的,这里就涉及到今天我们讲的插值查找,是在对分查找基础上的一种优化,本身代码与对分查找极其相似

插值查找(Interpolation Search)是根据要查找关键字key与查找表中最大最小记录的关键字比较后的查找方法,其核心就在于插值的计算公式:key-arr[low]/arr[high]-arr[low]

换形为mid的计算公式为:(high-low)*(key-arr[low])/(arr[high]-arr[low])
其代码如下:

Private Sub Interpolation_Search(length , key)
    low = 1: high = length
    Do While i <= j
        m = (high-low) * (key-arr(low))/ (arr(high)-arr(low))   
        If arr(m) = Key Then
           Label1.Caption = Str(m) 
           Exit Do
        ElseIf Key < a(m) Then
           high = m - 1
        Else
           low = m + 1
        End If
    Loop
End Sub

插值查找相对于对分查找共数组分布较均匀则效率高,反之效率低!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值