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

堆货算法

发布时间: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)。

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

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

阅读全文

与堆货算法相关的资料

热点内容
编译器用数学吗 浏览:7
图形化apk反编译工具 浏览:48
考勤表加密怎么办 浏览:735
arj压缩与解压批处理怎么写 浏览:658
php和大数据哪个好 浏览:930
未来最值得投资的加密货币 浏览:526
ascii码是编译的时候用吗 浏览:781
压缩机感应包可以通用吗 浏览:412
方舟服务器怎么发布到搜索列表 浏览:270
xml防反编译 浏览:241
数据传输加密系统技术方案 浏览:842
程序员没有准备去面试 浏览:4
51单片机usb鼠标 浏览:881
qq服务器的ip地址查询 浏览:112
java仿qq聊天 浏览:402
解压的ipa重新打包 浏览:144
程序员那么可爱vip版 浏览:241
程序员怎么升职 浏览:245
图形化命令按钮vb 浏览:987
vcu盘加密怎么设置 浏览:415