韩文网站建设,做网站销售怎么做,企业如何做好网站的seo优化,建设网站买的空间是服务器吗前言#xff1a; 关于最大堆和最小堆的题目#xff0c;我做过了很多次#xff0c;但是好像没有一个是完全独立AC的。2021春季PAT考试的前一天#xff0c;天梯赛校内赛还专门考了最小堆#xff0c;我复习了一下#xff0c;结果第二天PAT考了最大堆#xff0c;又是没做出来…前言 关于最大堆和最小堆的题目我做过了很多次但是好像没有一个是完全独立AC的。2021春季PAT考试的前一天天梯赛校内赛还专门考了最小堆我复习了一下结果第二天PAT考了最大堆又是没做出来…天梯赛快到了打算写篇博客整理一下最大堆和最小堆问题的解法。
正文 最大堆和最小堆又称大顶堆和小顶堆问题一般是建立一个普通的数组根据二叉树的性质对其进行交换移动。 建堆的方式有全放进去再排也有边插入边排序的。由于最大堆和最小堆是不唯一的因此这两种方式得出来的结果是不唯一的一定要仔细地阅读题意分清楚题目要求的是哪种方式~
对于最大堆来说如果是插入式的做法是一个个地插入每次插入的时候最大堆向上调整即当前元素比父节点大的时候就交换顺序。如果是一次次全部放好再生成堆的需要从最后一个元素开始依次向下调整即当前元素选择与最大的父节点进行交换。
对于最小堆来说如果是插入式的做法是一个个地插入到最后面每次插入的时候向上调整与最大堆同理。如果是后者建堆则从最后一个结点开始依次向下调整。
注不难发现对叶节点进行向下调整不会发生任何操作因此我们可以从非叶节点开始也就是最大节点的下标除以2。