导航:首页 > 源码编译 > 堆货算法

堆货算法

发布时间:2024-11-28 08:41:25

① 【跟着小蛋刷算法】什么是堆如何实现堆排序,满满的干货来了

堆可以理解为特殊树形结构,满足两个条件:完全二叉树与值的比较规则(大顶堆或小顶堆)。完全二叉树特点是除最后一层外,其他层节点满载,最后一层靠左排列。大顶堆为每个节点大于或等于子节点,小顶堆为每个节点小于或等于子节点。以下图示为堆的示例。

构建堆采用数组形式。每个节点存储在数组的第二位置开始,定义节点在数组的位置为i,左子节点为2i,右子节点为2i+1。通过此规律可以推导出节点关系。接下来通过代码实现堆的各种功能。

往堆中插入元素时,需满足堆的特性。如果插入后不满足,执行堆化操作,即新插入的节点与父节点比较,若不满足子节点小于等于父节点则交换节点值,重复过程直到堆满足特性。此过程如图示。

删除堆顶元素,即删除堆中最大元素。将堆顶元素值与最后一个节点值互换,再执行堆化过程,直到堆满足特性。图示此过程。

堆排序利用堆进行排序。首先将序列构造成大顶堆,最大值在堆顶。接着交换堆顶元素与末尾元素,将剩余元素重新构造成堆,得到次大值,反复执行得到有序序列。

实现堆排序的第一步是构建大顶堆,采用从上往下的堆化方式。假设待排序序列{0,7,5,19,8,4,1,20,13,16},堆元素从数组下标1开始,总共有9个元素。循环从9/2=4开始,直至1,因为这些节点有子节点。

排序过程是不断将堆顶元素与末尾元素交换,将堆元素减1,然后重新堆化,重复直至完成排序。整个过程如图所示。

堆排序时间复杂度包括构建堆与排序,构建堆为O(n),排序为O(nlogn),整体时间复杂度为O(nlogn)。

堆的概念、插入与删除操作、堆排序与排序代码详解。总结堆知识点,堆排序流程,以及建堆和排序的代码实现。

堆的知识点已大致讲解,但算法之路漫长,继续坚持学习。关注小蛋,一起交流进步,更多的算法干货将不断推出。

阅读全文

与堆货算法相关的资料

热点内容
柯洁在哪个app下围棋 浏览:749
平板用什么app看内在美 浏览:607
cad计算机命令 浏览:171
邮箱设置域名服务器错误什么意思 浏览:671
硬盘解压失败受损蓝屏 浏览:654
应用和服务器是什么意思 浏览:485
程序员需要知道的网站 浏览:713
微信支付页面加密码怎么加 浏览:57
网络加密狗问题 浏览:698
cnc曲面编程实例 浏览:170
什么app零粉分发视频有收益 浏览:164
肯尼亚程序员 浏览:640
新科源码 浏览:661
如何判断服务器有没有带宽 浏览:44
天正建筑批量删除命令 浏览:96
cad最下面的一排命令都什么意思 浏览:456
pythonimportcpp 浏览:852
W10的系统怎么给U盘加密 浏览:372
华为手机代码编程教学入门 浏览:764
和彩云没会员怎样解压 浏览:636