堆排序(几个重点)

2023-11-15

https://blog.csdn.net/touch_2011/article/details/6767673

几个重点

  1. 大小顶堆虽然逻辑形式是完全二叉树,但实际是以数组的形式存储。
  2. 最后一个非叶子节点(最后一个有孩子的节点)的位置是 [n/2] 向下取整。
  3. 为什么是[n/2]向下取整呢?在这里我简单的说明一下:设n1表示完全二叉树中有一个孩子的结点,n2表示表示完全二叉树中有两个孩子的结点,d表示非叶子结点的个数,那么总的结点个数:n=n1+2*n2+1。
    (1)当n为奇数时,n1=0,n2=(n-1)/2,d=n2+n1=(n-1)/2
    (2)当n为偶数时,n1=1,n2=n/2-1,d=n2+n1=n/2
    由此可以看出d=[n/2]向下取整.
  4. 完全二叉树中拥有一个孩子的非叶子节点,只能有一个。
  5. 从上述推导过程可以看出,[n/2]后面的都是叶子节点,前面的都是双亲节点。
  6. i节点的孩子在2i,2i+1的位置。可不是+1+2
  7. i节点的父节点在i/2,(i-1)/2的位置。
  8. 堆排序的过程实际上就是建堆,取顶点,筛选法重排堆的过程。
  9. 时间复杂度O(2nlogn)。
  10. 筛选法是在子树已经是堆的情况下的递归算法,自上而下。
  11. 建堆也是筛选法,只不过这次只有叶子节点才是堆,所以自下而上,然后再递归下来。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

堆排序(几个重点) 的相关文章

随机推荐

  • 【WSL2 Win10】解决子系统中nividia-smi出现的Failed to initialize NVML GPU access blocked by the operating system

    0 问题 环境 WIN10家庭中文版 WSL2 Ubuntu x64架构 尝试在WSL2中装CUDA 装好以后在wsl系统中输入nvidia smi命令 结果报错 但是在Win10的CMD中正常显示 Failed to initialize
  • Android繁星眨眼动画效果

    分享一个类似星星眨眼的动画效果实现方式 这里涉及到两个类 看官可直接拿来用 StarView java import android content Context import android graphics Bitmap import
  • postman断言

    1 先说返回数据json断言 在断言列表中选择自己想要的断言函数 参数替换成自己的即可 我的返回体是这样的 原始的函数 pm test Your test name function var jsonData pm response jso
  • 在安卓上解决input调起软键盘之后容器高度被挤压的问题

    问题描述 一个简单的带有背景图片的登录页面 结果调起软键盘之后在安卓手机上出现了背景图片无法充满整个页面的问题 即使容器高度设置100 也不好使 后来只能使用监测window的size变化 从而重新给背景图容器赋值的方法 代码如下 安卓弹出
  • centos7搭建pptp

    1 检查是否支持 终端输入 modprobe ppp compress 18 echo yes 返回 yes 表示支持 pptp 2 安装组件 yum install epel release y yum install ppp iptab
  • Velocity类型转换与运算

    字符串转数字 set str 100 要将str转换为整数 则先定义一个变量 赋值为整数 然后利用Java的类型转转功能 set zhengshu 0 转换为整数 zhengshu parseInt str 若是要转换为其他数字类型 同理定
  • matinal:SAP ABAP FB04清账 POSTING_INTERFACE_CLEARING

    上代码 REPORT ztest INTERNAL TABLE DECLARATION DATA it blntab TYPE TABLE OF blntab WITH HEADER LINE it ftclear TYPE TABLE O
  • JAVA内存管理常识

    大多数 JVM 将内存区域划分为 Method Area Non Heap 方法区 Heap 堆 Program Counter Register 程序计数器 VM Stack 虚拟机栈 也有翻译成JAVA 方法栈的 Native Meth
  • flex布局可能碰到的坑1

    flex布局非常好用 但在开发过程中可能会碰到的一些坑 1 内容超出容器 大致情况是 在一个设置了display flex布局的大容器A中并排放置两个子容器 并且子容器设置flex 1 子容器中都有一个元素包含一段文本 这段文本设置了不换行
  • 服务器终端性能测试之GPU burn压力测试

    GPU burn 测试GPU 1 下载软件 https github com wilicc gpu burn wget https codeload github com wilicc gpu burn zip master 2 解压缩 u
  • win10家庭版启用远程桌面

    此电脑右键属性 gt 远程设置 gt 允许远程协助连接这台计算机 勾选 下载RDP Wrapper 地址 https github com stascorp rdpwrap releases 解压后点击RDPCheck exe 如显示无法连
  • VS2019使用以及UE4的代码调试

    1 会进行代码调试 Ctrl Shift B 编译代码 Ctrl f5 运行 不调试 f5 调试 shift f5 停止调试 f11 逐步执行 f9 切换断点 对于UE4的工程代码的调试仍然需要学习与总结 2 会进行函数查找 不借助番茄插件
  • lattice 包的用法

    1 library lattice 加载包 d lt data frame x seq 0 14 y seq 1 15 z rep c a b c times 5 xyplot y x data d xy的散点图 xyplot y x z
  • 关于贷后的8个专业名词解析

    一 DPD day past due DPD的意思是逾期天数 指的是逾期用户在最早违期日期至目前日期的时间间隔 贷后催收时需要计算用户的逾期天数 并根据逾期的情况采用不同的催收手段 二 Mn M1 Mn的意思是逾期的期数 比如M1表示逾期一
  • 《Autodesk Revit二次开发基础教程》书籍终于上架了

    由Autodesk中国研究院Revit开发团队的几位同事一起编撰的 Autodesk Revit二次开发基础教程 于今天在天猫同济大学出版社旗舰店正式上架 购买链接在这里 https detail tmall com item htm u
  • TensorFlow训练模型的过程中打开tensorboard

    在训练的过程中 想通过tensorboard实时观察训练损失和验证集准确率 一直出错 打开tensorboard后在浏览器查看 然后训练就停止了 提示信息如下 File D ProgramData PycharmProjects tf le
  • Spring源码分析(一):Spring底层核心原理解析

    本节只讲结论 不做验证 后面会专门拉代码讲解验证 Spring的核心是IOC和AOP 大概有这么几个核心知识点 Bean的生命周期底层原理 依赖注入底层原理 初始化底层原理 推断构造方法底层原理 AOP底层原理 Spring事务底层原理 S
  • 大陆医生谈收入

    官网 ZY123 com 中医123 本人今年45岁 84年大本 87年研究生毕业 很正规的医学院校毕业 随后分到中部一家大型医院干了4年临床 91年先到欧洲的实验室混了几年 后来到临床上干了2年后回来了 也算 海龟 吧 先在广东的两家医院
  • 【基础教学】UiBot的下载、安装与使用

    鉴于很多小伙伴 可能刚刚关注UiBot 对这个平台还不是很了解 我们准备系统的讲解UiBot的相关操作 方便您对UiBot的认识与使用 目录 1 UiBot软件简介 2 UiBot能为您做什么 3 系统环境及配置要求 4 下载与安装 5 注
  • 堆排序(几个重点)

    https blog csdn net touch 2011 article details 6767673 几个重点 大小顶堆虽然逻辑形式是完全二叉树 但实际是以数组的形式存储 最后一个非叶子节点 最后一个有孩子的节点 的位置是 n 2