邓俊辉《数据结构》→ “2.6.5 二分查找(版本A)”之“成功查找长度”递推式推导
【问题描述】
邓俊辉的《数据结构(C++语言版)(第3版)》(ISBN:9787302330646)中,开始于第48页的“2.6.5 二分查找(版本A)”内容在第50页详述了“成功查找长度”的递推式,但此递推式乍一看令人费解。故为了说明问题,进行一些约定并详述如下:
● 既然是二分查找,所以给定的序列必定是有序的。
● 不失一般性,约定有序序列的长度 ,这样便可构建一个高度为 k 的满的二分查找树。
● 设 C(k) 表示高度为 k 的满的二分查找树中所有元素的查找长度总和。此时,问题就可以用递归方法求解。即 k 层的满二叉树,可以转化为左右两个 k-1 层的满二叉树。 依据邓俊辉《数据结构(C++语言版)(第3版)》(ISBN:9787302330646)中“2.6.5 二分查找(版本A)”的算法陈述,可知:
(1)第 k 层的查找长度为2(也即 );
(2)且稍加观察会发现左面的 k-1 层的子树所有元素的查找长度都会相对于以第 k-1 层为顶层时的查找长度多1(左子树共多 )。
(3)同样右面的 k-1 层的子树所有元素的查找长度都会相对于以第 k-1 层为顶层时的查找长度多2(右子树共多 )。
所以,根据递归算法的设计思想,需要把这些长度补上,共同构成 C(k)。

综上,可得 C(k) 的递推公式如下:
化简得:
若令,
则有:
故利用上文得出的 ,可进一步得出:
于是将 代入
可得:
从而可得平均查找长度为:
忽略掉低阶项、常数项、系数项,可得本版本的二分查找的平均查找长度的时间复杂度为:
【参考文献】
https://ask.csdn.net/questions/699067
https://www.bilibili.com/video/BV1C54y1L7JM/
https://www.bilibili.com/video/BV1C54y1L7JM/?p=76&vd_source=fea4f130ba05b1c873be1db0c639fc56
https://blog.csdn.net/hnjzsyjyj/article/details/133100051
https://blog.csdn.net/qq_33499861/article/details/105103708
相关文章:
邓俊辉《数据结构》→ “2.6.5 二分查找(版本A)”之“成功查找长度”递推式推导
【问题描述】 邓俊辉的《数据结构(C语言版)(第3版)》(ISBN:9787302330646)中,开始于第48页的“2.6.5 二分查找(版本A)”内容在第50页详述了“成功查找长度”的…...
Linux文件查找,别名,用户组综合练习
1.文件查看: 查看/etc/passwd文件的第5行 [rootserver ~]# head -5 /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologi…...
【MATLAB第77期】基于MATLAB代理模型算法的降维/特征排序/数据处理回归/分类问题MATLAB代码实现【更新中】
【MATLAB第77期】基于MATLAB代理模型算法的降维/特征排序/数据处理回归/分类问题MATLAB代码实现 本文介绍基于libsvm代理模型算法的特征排序方法合集,包括: 1.基于每个特征预测精度进行排序(libsvm代理模型) 2.基于相关系数corr的…...
第三章 图标辅助元素的定制
第三章 图标辅助元素的定制 1.认识图表常用的辅助元素 图表的辅助元素是指除了根据数据绘制的图形之外的元素,常用的辅助元素包括坐标轴、标题、图例、网格、参考线、参考区域、注释文本和表格,它们都可以对图形进行补充说明。 上图中图表常用辅…...
【前端】ECMAScript6从入门到进阶
【前端】ECMAScript6从入门到进阶 1.ES6简介及环境搭建 1.1.ECMAScript 6简介 (1)ECMAScript 6是什么 ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在2015年6月正式发布了。它的目标ÿ…...
Android Shape设置背景
设置背景时,经常这样 android:background“drawable/xxx” 。如果是纯色图片,可以考虑用 shape 替代。 shape 相比图片,减少资源占用,缩减APK体积。 开始使用。 <?xml version"1.0" encoding"utf-8"?…...
什么是GraphQL?它与传统的REST API有什么不同?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 什么是GraphQL?⭐ 与传统的REST API 的不同⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣…...
如何定时备份使用Docker构建的MySQL容器中的数据库
👨🏻💻 热爱摄影的程序员 👨🏻🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻🏫 一位高冷无情的编码爱好者 大家好,我是 DevO…...
Java【手撕链表】LeetCode 143. “重排链表“, 图文详解思路分析 + 代码
文章目录 前言一、两数相加1, 题目2, 思路分析2,1 找到中间结点2.2, 逆序后半段链表2.3, 合并两个链表 3, 代码 前言 各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: 📕 JavaSE基础: 基础语法, 类和对象, 封装继承多态, 接口, 综合小练习图书管…...
C语言 cortex-A7核 按键中断 实验【重点】
一、KEY1 include/key.h #ifndef __KEY_H__ #define __KEY_H__#include "stm32mp1xx_rcc.h" #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_exti.h" #include "stm32mp1xx_gic.h"//RCC/GPIO章节初始化 void hal_rcc_gpio_init…...
freertos中函数调用和启动第一个任务(栈相关!!!!!!)
本内容仅就一些较难理解的点讲解,请结合其它文章实用 在函数调用时,m3的处理器使用r0-r3共四个寄存器传参,其余的使用栈传参。 但是,如果传入的参数是全局变量,则不需传参,因为全局变量在函数内部是可见的…...
【PHP】如何关闭buffer实时输出内容到前端
前言 默认情况下,我们在PHP里使用echo等函数输出的内容,是不会马上发送给前端的,原因是有 buffer 的存在,buffer又分两处,一处是PHP本身的buffer,另一处是Nginx的buffer。只有当buffer满了之后,…...
Scala第二章节
Scala第二章节 scala总目录 章节目标 掌握变量, 字符串的定义和使用掌握数据类型的划分和数据类型转换的内容掌握键盘录入功能理解Scala中的常量, 标识符相关内容 1. 输出语句和分号 1.1 输出语句 方式一: 换行输出 格式: println(里边写你要打印到控制台的数据);方式二…...
Spring修炼之路(2)依赖注入(DI)
一、概念 依赖注入(Dependency Injection,DI)。 测试pojo类 : Address.java 依赖 : 指Bean对象的创建依赖于容器 . Bean对象的依赖资源 . 注入 : 指Bean对象所依赖的资源 , 由容器来设置和装配 . 二、 注入方式 2.1构造器注入 我们在之前的案例已经…...
编写Android.mk / Android.bp 引用三方 jar 包,aar包,so 库
一.前言 在Android10之后,所有项目工程中,官方推荐使用Android.bp去编译构建,以前使用Android.mk构建的项目随着版本迭代升级,慢慢需要变更为Android.bp, 两者的语法都需要去了解并熟练使用。 笔者之前写过Android.mk的…...
【kylin】【ubuntu】搭建本地源
文章目录 一、制作一个本地源仓库制作ubuntu本地仓库制作kylin本地源 二、制作内网源服务器ubuntu系统kylin系统 三、使用内网源ubuntukylin 一、制作一个本地源仓库 制作ubuntu本地仓库 首先需要构建一个本地仓库,用来存放软件包 mkdir -p /path/to/localname/pac…...
为什么 Go 语言 struct 要使用 tags
在 Go 语言中,struct 是一种常见的数据类型,它可以用来表示复杂的数据结构。在 struct 中,我们可以定义多个字段,每个字段可以有不同的类型和名称。 除了这些基本信息之外,Go 还提供了 struct tags,它可以用…...
WebGL笔记:WebGL中JS与GLSL ES 语言通信,着色器间的数据传输示例:用鼠标控制点位
用鼠标控制点位 <canvas id"canvas"></canvas><!-- 顶点着色器 --> <script id"vertexShader" type"x-shader/x-vertex">attribute vec4 a_Position;void main() {// 点位gl_Position a_Position;// 尺寸gl_PointSize…...
算法 主持人调度-(双指针+贪心)
牛客网: BM96 题目: 一个主持人只能参加一个活动,至少需要多少主持人 思路: 对start, end排序从小到大;初始化指针l, r 0, 0;start[r]< end[l]时需要累加人数同时r,否则l,r同时移动;直至不再满中l<n &&am…...
Elasticsearch 集群时的内部结构是怎样的?
Apache Lucene : Flush, Commit Elasticsearch 是一个基于 Apache Lucene 构建的搜索引擎。 它利用 Lucene 的倒排索引、查询处理和返回搜索结果等功能来执行搜索。 它还扩展了 Lucene 的功能,添加分布式处理功能以支持大型数据集的搜索。 让我们看一下 Apache Luc…...
Midscene.js:重新定义AI驱动的跨平台视觉自动化架构
Midscene.js:重新定义AI驱动的跨平台视觉自动化架构 【免费下载链接】midscene AI-powered, vision-driven UI automation for every platform. 项目地址: https://gitcode.com/GitHub_Trending/mid/midscene 在当今快速发展的数字生态中,企业面临…...
黑苹果安装实战指南:1000+机型EFI配置与工具集深度解析
黑苹果安装实战指南:1000机型EFI配置与工具集深度解析 【免费下载链接】Hackintosh Hackintosh long-term maintenance model EFI and installation tutorial 项目地址: https://gitcode.com/gh_mirrors/ha/Hackintosh 在非苹果硬件上运行macOS(俗…...
百度网盘Mac版性能优化:深入解析macOS逆向工程技术实践
百度网盘Mac版性能优化:深入解析macOS逆向工程技术实践 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 百度网盘Mac版性能优化工具是一款基…...
PRML马尔可夫链:HMM在序列预测中的终极应用指南
PRML马尔可夫链:HMM在序列预测中的终极应用指南 【免费下载链接】PRML PRML algorithms implemented in Python 项目地址: https://gitcode.com/gh_mirrors/pr/PRML PRML项目为机器学习爱好者提供了Christopher Bishop经典著作《模式识别与机器学习》的完整P…...
KeyboardChatterBlocker:彻底解决机械键盘连击问题的免费开源方案
KeyboardChatterBlocker:彻底解决机械键盘连击问题的免费开源方案 【免费下载链接】KeyboardChatterBlocker A handy quick tool for blocking mechanical keyboard chatter. 项目地址: https://gitcode.com/gh_mirrors/ke/KeyboardChatterBlocker 机械键盘在…...
游戏交易税、年龄锁与拒付账单:APP出海全球合规风暴
上周,监管与平台的合规重拳,密集落在了游戏交易、未成年人保护和支付链条上。几项变化直接且锋利,对出海游戏厂商而言,已不再是远期预警,而是迫在眉睫的执行项。 美国州级监管:直指游戏内购与停服责任 科…...
无线TDoA定位中的硬件偏差问题与DTB校准方法
1. 无线TDoA定位中的硬件偏差问题解析在无线定位领域,时间差到达(Time Difference of Arrival, TDoA)技术因其能够消除接收机时钟偏差而备受青睐。然而,这项技术在实际应用中面临一个关键挑战:节点硬件引入的系统性偏差…...
Symbol Opener:基于URI与LSP实现终端代码符号一键跳转
1. 项目概述:一个能让你在终端里“点击”代码符号的插件 如果你和我一样,每天大部分时间都泡在终端里,那你肯定遇到过这个场景:运行 git log 或者 grep 命令,终端输出了一堆函数名、类名,你想立刻跳转…...
2025届学术党必备的五大AI学术助手实测分析
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek AI论文工具在当代学术领域,已然成为了极为关键的辅助支撑力量,它可全…...
5分钟掌握Nexus Mods App:告别模组管理烦恼的终极解决方案
5分钟掌握Nexus Mods App:告别模组管理烦恼的终极解决方案 【免费下载链接】NexusMods.App Home of the development of the Nexus Mods App 项目地址: https://gitcode.com/gh_mirrors/ne/NexusMods.App 还在为游戏模组冲突、依赖缺失而烦恼吗?N…...
