【jeecg-boot项目开发crm】:平台技术点——day05【Java定时任务解决方案:二、小顶堆(插入,删除元素)】:图灵课堂

二、小顶堆

在这里插入图片描述

  • Timer和定时任务线程池用的都是基于小顶堆
  • 后面的quartz以及更高级的是基于时间轮算法

2.1 堆

在这里插入图片描述

  • 堆是一颗完全二叉树
    在这里插入图片描述
  • 完全二叉树:除了最后一层外,其他层都达到最大节点数,且最后一层节点都靠左排列。
    在这里插入图片描述
  • 小顶堆:最小值在上面
  • 大顶堆:最大值在上面
  • 要掌握:堆的,存,取
    • 存的话,java有两种:数组和列表【这里选用的数组的方式】

在这里插入图片描述

  • 堆插入数组的原则:从上到下,从左向右。
  • 查询不方便,所以数组下标0的位置不放数字。
  • 这样的好处是查询父节点方便,只需要用子节点的下标/2即可。
  • 注:每一个节点存的是一个Job,Job的值就包含了触发时间(所以越靠前触发时间越近)。

2.2 插入元素[插入尾部,然后上浮]

在这里插入图片描述

  • 记住一句话:插入尾部,然后上浮就可以了【上浮下沉还有个词叫:堆化】
  • 插入尾部:就避免了插到头部数组的整体移动问题
  • 然后上浮:和他的父节点比,如果小于父节点就替换。迭代向上走
    在这里插入图片描述
    在这里插入图片描述

2.3 删除堆顶元素[将尾部(最大的元素)元素放到堆顶,然后下沉]

  • 删除只能取堆顶元素

在这里插入图片描述

  • 记住这句话就行了:将尾部(最大的元素)元素放到堆顶,然后下沉【上浮下沉还有个词叫:堆化】
    在这里插入图片描述
  • 比如:将8放到根节点上之后(删除原来的)
  • 然后和比较小的子节点进行交换
  • 继续迭代上面的步骤

在这里插入图片描述

2.4 以上呢种就是核心下面是了解【建堆,堆排序,总结】

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狂野小白兔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值