美文网首页
堆(大根堆、小根堆)学习

堆(大根堆、小根堆)学习

作者: papi_k的小茅屋 | 来源:发表于2023-12-04 16:16 被阅读0次

堆,可以被看做一颗完全二叉树数组对象。我们的数据实际上在逻辑上可以根据数组的索引构建出一颗完全二叉树。

堆排序是根据堆的这种数据结构设计的一种排序。假想一种常见的场景,操场上小伙伴们四散开来到处都是。突然要紧急集合,小伙伴们同时冲向同一个队列,但这时大家互相不熟悉,没有固定位置,又要赶紧按照高矮顺序排好队伍;有的小伙伴还有特殊能力,长高或者变矮,

要求队伍始终是按照高矮排好的。堆就是这样的一种优秀的数据结构,在每次添加或者修改元素时,都可以自动调整自身的结构,使其重新成为一个大根堆或者小根堆。而且,这个过程只要付出logN的代价(树的高度)。在大样本的情况下优势很大。


什么是大根堆和小根堆

每个节点的值都大于其左孩子和右孩子的值,称为大根堆;每个节点的值都小于其左孩子和右孩子的值,称为小根堆,如图。

对上边的每个数都进行标记,将二叉树映射成数组,就变成如下。


结点位置与索引值之间的关系

如果已知某个数的索引i,则i与结点的位置关系如下。

i位置结点的左孩子在数组中的位置是: (2*i) + 1

i位置结点的右孩子在数组中的位置是: (2*i) + 2

i位置结点的父节点在数组中的位置是: (i-1) / 2


yo peace!

相关文章

  • 堆的创建

    二叉堆的定义 堆通常由大根堆和小根堆,大根堆表示父节点大于字节点,小根堆相反eg:小根堆 可以看出堆屎一个完全二叉...

  • 2018-08-14 LeetCode数据流的中位数

    较小的一半数放在大根堆较大的在小根堆,大根堆堆顶为较小数的最大值,小根堆的堆顶为较大数的最小值始终保持大根堆和小根...

  • 数据结构与算法之堆排序

    小根堆--向下构建 大根堆--向上构建 不要误解,其实无论向上调整还是向下调整都是可以构建大根堆或者小根堆的。注:...

  • 堆简述 堆(heap)的结构是一个完全二叉树的结构。 堆分大根堆和小根堆。如果一个二叉树它即不是大根堆,也不是小根...

  • 春招笔记 堆

    1. 堆是完全二叉树,根据父节点和子节点的关系,可以分为大根堆和小根堆。 大根堆的父节点比它的所有子节点大,小根...

  • 大/小根堆 - PriorityQueue

    1,基础知识 1)完全二叉树,双亲节点和孩子节点的关系array[0,...,n-1]表示完全二叉树顺序存储模式1...

  • 堆排序

    什么是堆? 堆通常是一个可以被看做一棵完全二叉树的数组对象。——百度词条 堆又分为大根堆和小根堆 大根堆(最大堆)...

  • 堆 &heap & priority_queue &实现

    [toc] 什么是堆? 堆是一种数据结构,可以用来实现优先队列 大根堆 大根堆,顾名思义就是根节点最大。我们先用小...

  • 构建大根堆

    对于一个没有重复元素的整数数组,请用其中元素构造一棵MaxTree,MaxTree定义为一棵二叉树,其中的节点与数...

  • 215. Kth Largest Element in an A

    找到未排序数组中第K大的数,使用大根堆和小根堆的区别

网友评论

      本文标题:堆(大根堆、小根堆)学习

      本文链接:https://www.haomeiwen.com/subject/erzlgdtx.html