当前课程知识点:数据结构(上) > 第二章 向量(下) > (d5)有序向量:插值查找 > 02D5-3 性能分析
插值查找平均而言会怎么样?
那么这里我们需要用到一个非常基础
类似引理的结论
这个结论是这么说的
在插值查找算法中
每经过一次迭代
或者说每经过一次比较
我们都可以将查找的范围
也就是我们所说的
减而治之之后 剩余的部分
由原先的规模n 缩减为根号n
通过姚先生
包括其他人在早期的一些精确的论证
可以证明这一点
在习题解析第二章的第24题中
我们也花了相当的篇幅
给出了较为严密的这样的一个证明
所以在这里
我们不妨把这个作为一个事实
再说一遍 每经过一次比较
插值查找算法
就可以将查找范围从n缩短为根号n
那么根据这样的一个事实
我们就不难得出这个算法整体的效率了
也就是平均而言
大致需要做多少次迭代
因为查找区间的宽度必然是从n
变到根号n 然后继续开根号
再开根号 一直开下去
直到开到足够小的一个数
平凡的情况
那么在此期间
我们总共要迭代多少次呢?
我们不妨把它写出来
每一次开方 相当于在做一次1/2次方
每做一次 就是1/2次方
累计起来 如果是叠加了k步的话
那么当然是1/2次方的k次方
然后再去做n的指数 这么多幂
那么这个数在什么情况下
又小于2了呢
那么这个应该是很基本的数学功夫
这样的一个代数推导
我们留给大家
我们说最后的结论是
总体只需要log再取一次log
loglogn这么多次迭代
当然 从渐近的意义上讲
比原来说的logn要小很多
从这个图我们也可以大致看出来
如果原来这个是n的话
很快就缩减为根号n
再根号根号n 根号根号根号n
一直下去 很快就会收敛 收敛的非常快
当然我们这里跟此前我们所强调的一样
我们并不希望过多的使用数学
而是应该恰当的使用数学
比如在很多时候 你应该学会准确的估算
那么我们来看看
对于这个例子而言
我们同样可以来估算
-选课之前
--写在选课之前
--宣传片
-考核方式
--考核方式
-OJ系统说明
--关于OJ
--1-注册与登录
--2-界面与选课
--3-提交测试
-关于课程教材与讲义
--课程教材与讲义
-关于讨论区
--关于讨论区
-微信平台
--html
-PA晋级申请
--PA晋级
-(a)计算
--演示
--(a)计算--作业
-(b)计算模型
-(b)计算模型--作业
-(c)大O记号
-(c)大O记号--作业
-(d)算法分析
-(d)算法分析--作业
-(e)迭代与递归
-(e)迭代与递归--作业
-(xc)动态规划
-- 演示
-(xc)动态规划--作业
-本章测验--作业
-(a)接口与实现
--02A-5 复制
-(a)接口与实现--作业
-(b)可扩充向量
-(b)可扩充向量--作业
-(c)无序向量
--02C-1 概述
--02C-3 插入
--02C-6 查找
--02C-8 遍历
-(c)无序向量--作业
-(d1)有序向量:唯一化
-(d1)有序向量:唯一化--作业
-(d2)有序向量:二分查找
-(d2)有序向量:二分查找--作业
-(d3)有序向量:Fibonacci查找
-(d3)有序向量:Fibonacci查找--作业
-(d4)有序向量:二分查找(改进)
-(d4)有序向量:二分查找(改进)--作业
-(d5)有序向量:插值查找
-第二章 向量(下)--(d5)有序向量:插值查找
-(e)起泡排序
--02E-2 改进
--02E-3 反例
-(e)起泡排序--作业
-(f)归并排序
-(f)归并排序--作业
-本章测验--作业
-(a)接口与实现
--03A-4 实现
-(a)接口与实现--作业
-(b)无序列表
--03B-2 查找
-(b)无序列表--作业
-(c)有序列表
--03C-3 查找
-(c)有序列表--作业
-(d)选择排序
--03D-1 构思
--03D-2 实例
--03D-3 实现
--03D-4 推敲
--03D-6 性能
-(d)选择排序--作业
-(e)插入排序
--03E-1 经验
--03E-2 构思
--03E-3 对比
--03E-4 实例
--03E-5 实现
-(e)插入排序--作业
-(xd)习题辅导:LightHouse
-本章测验--作业
- (a)栈接口与实现
--04A-1 栈
--04A-2 实例
--04A-3 实现
- (a)栈接口与实现--作业
-(c1)栈应用:进制转换
-第四章 栈与队列--(c1)栈应用:进制转换
-(c2)栈应用:括号匹配
-(c2)栈应用:括号匹配--作业
-(c3)栈应用:栈混洗
-第四章 栈与队列--(c3)栈应用:栈混洗
-(c4)栈应用:中缀表达式求值
-(c4)栈应用:中缀表达式求值--作业
-(c5)栈应用:逆波兰表达式
-第四章 栈与队列--(c5)栈应用:逆波兰表达式
-(d)队列接口与实现
--04D-1 接口
--04D-2 实例
--04D-3 实现
-第四章 栈与队列--本章测验
-(a)树
--05A-1 动机
--05A-2 应用
-(a)树--作业
-(b)树的表示
--05B-2 父亲
--05B-3 孩子
-第五章 二叉树--(b)树的表示
-(c)二叉树
-(c)二叉树--作业
-(d)二叉树实现
-(d)二叉树实现--作业
-(e1)先序遍历
-(e1)先序遍历--作业
-(e2)中序遍历
-第五章 二叉树--(e2)中序遍历
-(e4)层次遍历
-第五章 二叉树--(e4)层次遍历
-(e5)重构
-(e5)重构--作业
-本章测验--作业
-(a)概述
-(a)概述--作业
-(b1)邻接矩阵
-(b1)邻接矩阵--作业
-(c)广度优先搜索
--06C-2 策略
--06C-3 实现
--06C-5 实例
-(c)广度优先搜索--作业
-(d)深度优先搜索
--06D-1 算法
--06D-2 框架
--06D-3 细节
-(d)深度优先搜索--作业
-第六章 图--本章测验