最近在看插值查找,对于他的公式都是基于二分推导出来的
二分:mid = 1/2(left+right) = left+1/2(right-left)
插值查找:
设定比值为k,查找值为key k=(key - a[right])(a[left]-a[right])
根据二分公式left+1/2(right-left),将1/2替换为k推导而出:mid = left+k(right-left) 其结果简化可得mid = kright+(l-k)left
但如果是根据二分公式:mid = 1/2(left+right),将1/2替换成k却推导而出:mid = k(left+right) 简化可得mid = kright+kleft
两者都是将1/2替换为k,最终推导出的公式不一样,那么如何确定他的正确性呢?又或者插值公式的正确推导应该是什么样子的呢?
基于二分查找的插值查找公式推导过程的
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 知虚 2022-10-25 11:31关注
mid = left+k(right-left) 其结果简化可得mid = kright+k(l-left) 这一步简化没看懂呀;
我理解 mid = left+k(right-left) 推导得 mid = left + kright - kleft ,提取公因式,简化得到 mid =kright +left(1-k),不知道对不对。
二分查找是插值查找特例把,K换成1/2后两者貌似是相同的解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 疾病的获得与年龄是否有关
- ¥15 关于浏览器控制台js报错问题-swiper.js相关
- ¥15 opencv.js内存,CPU飙升
- ¥15 植物重测序snp数据Treemix分析出现问题!
- ¥15 怎么让当前页面只能有一人在编辑
- ¥15 UCOSⅢ,3.0.3升级为3.0.4后程序编译成功,但是运行后死在统计任务的地方
- ¥15 python程序长时间运行卡死,付费求解决方案
- ¥20 VM打开不了ubuntu虚拟机,如何解决?
- ¥15 java请求一个返回流式数据的接口,如何将流式数据直接返回前端
- ¥15 为什么连接不了啊,配置都没问题啊