当前位置: 首页 > news >正文

向上or向下调整建堆 的时间复杂度的本质区别的讲解

知识点:(N代表节点数,h代表高度)

1:高度为h的满二叉树节点个数N为 2^(h)-1  即N =  2^(h)-1 

2:所以h = log(N+1)

一:向上调整建堆的时间复杂度

时间复杂度即:每层节点的个数×每层节点需要向上调整的次数

例:第一层的节点,有2^0个,并且因为向上调整,所以它不用调整

       第二层的节点,有2^1个,因为向上调整,所以需要向上调整一次

      ...................

1:所以可以得到一个次数与高度h的表达式

2:对此式子使用错位相减法:

3:上式减下式得到:

4:再将其凑成:

解释:

1:前面减一个2^0,后面再加一个2^0,式子没改变

然后对最前面的-2^0和红色部分使用等比求和(先总体提一个负号)使用等比求和得到以下:

由前提的两个公式可知:

 1:N =  2^(h)-1 

2:所以h = log(N+1)

将这两个公式替换进去:

根据大O表示法,可知 时间复杂度为: N*logN

二:向下调整建堆的时间复杂度

同理可知: 

时间复杂度即:每层节点的个数×每层节点需要向上调整的次数

区别在于:向下调整,最后一层不用调整,因为已经到了叶子节点

1:所以:

2:错位相减法可得:

 

3:相减得到:

4:再把式子凑一下:

 

解释:-(h-1)即-h+1,把+1 改成 2^0 和前面的式子进行等比求和

最后得到:

再同理用前面两个公式套进去可得:

 根据大O表示法可得时间复杂度为O(N)

 

所以可知向下调整比向上调整更优秀。

 

 

 

 

  

 

 

 

 

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • git 不跟踪某些文件的几种方式
  • Honeybee Locality-enhanced Projector for Multimodal LLM
  • 融资3亿美元——月之暗面:AI大模型领域的新星
  • erlang小白的学习之路--rebar3 升级
  • 回归评价指标
  • 数据中心网络设计方案-VXLAN+ l2vpn+OSPF
  • 【项目实战】C++视频共享点播系统
  • [ACP云计算]组件介绍
  • libcurl8.9.1 上传mp4文件
  • java基础概念17-static
  • 关于宠物浮毛对身体是否有害?宠物空气净化器选对告别浮毛困扰
  • 《雅思口语真经总纲1.0》话题实战训练笔记part1——6. Music
  • 海量日志数据收集监控平台应该怎么设计和实现
  • Json-JacksonUtils工具类
  • 力扣高频SQL 50题(基础版)第四十二题之1517.查找拥有有效邮箱的用户
  • Apache的80端口被占用以及访问时报错403
  • CentOS7 安装JDK
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • JAVA并发编程--1.基础概念
  • Python_网络编程
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • 程序员该如何有效的找工作?
  • 算法-插入排序
  • 听说你叫Java(二)–Servlet请求
  • 微信支付JSAPI,实测!终极方案
  • 一些关于Rust在2019年的思考
  • 因为阿里,他们成了“杭漂”
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • #Linux(make工具和makefile文件以及makefile语法)
  • #数据结构 笔记三
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (ISPRS,2021)具有遥感知识图谱的鲁棒深度对齐网络用于零样本和广义零样本遥感图像场景分类
  • (二)JAVA使用POI操作excel
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (附源码)计算机毕业设计高校学生选课系统
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET Standard 的管理策略
  • .net6Api后台+uniapp导出Excel
  • @Autowired注解的实现原理
  • @RequestParam,@RequestBody和@PathVariable 区别
  • @TableLogic注解说明,以及对增删改查的影响
  • [12] 使用 CUDA 加速排序算法
  • [17]JAVAEE-HTTP协议
  • [AIGC 大数据基础]hive浅谈
  • [Android 13]Input系列--获取触摸窗口
  • [Android]使用Git将项目提交到GitHub
  • [BZOJ4010]菜肴制作
  • [C/C++]数据结构 深入挖掘环形链表问题
  • [EFI]MSI GF63 Thin 9SCXR电脑 Hackintosh 黑苹果efi引导文件
  • [Head First设计模式]策略模式