现在的位置: 首页 > 架构设计 > 正文

堆是什么意思?有哪些基本操作

2020年01月13日 架构设计 ⁄ 共 376字 ⁄ 字号 评论关闭

  堆是什么意思

  如果有一个关键码的集合K={k0,k1,k2,.......kn-1},把他所有元素按照完全二叉树的顺序存储方式存储在一个一维数组中,并满足:Ki <= K2*i+1 且 Ki<= K2*i+2 (Ki >= K2*i+1 且 Ki >= K2*i+2) i = 0,1,2…,则称为小堆(或大堆)。

  小堆的特点是:任意一节点的数值都要大于堆顶的结点数据(孩子结点大于根节点,左右孩子可以不分大小排序)。堆顶元素最小。从根节点到每个结点的路径上数组元素组成的序列是递增的。

  大堆的特点是:任意一节点的数据都要小于堆顶的结点数据(孩子结点小于根节点,左右孩子可以不分大小排序)。堆顶元素最大。从根节点到每个结点的路径上数组元素组成的序列是递减的。

  堆存储在下标为0开始的数组中,因此在堆中给定下标为i的结点时:

  (1) 如果i=0,结点i是根节点,没有双亲节点;否则结点i的双亲结点为 结点(i-1)/2

  (2) 如果2 * i + 1 <= n - 1,则结点i的左孩子为结点2 * i + 1,否则结 点i无左孩子   (3)如果2 * i + 2 <= n - 1,则结点i的右孩子为结点2 * i + 2,否则结 点i无右孩   堆的基本操作(一下操作都是建立小堆)

  1.堆的创建

  2.堆的插入和删除

  堆的插入:在已经建成的最小堆的后面插入新元素,插入之后,当树 中结点不满足堆的性质时,就需要对堆进行重新调整。

  在一个最小堆之后插入新元素后可能破堆的结构,此时需要对新堆进行自下向上重新调整,将其调整为一个最小堆。

  3.堆的删除:删除时每次删除堆顶元素

  将堆中最后一个元素和堆顶元素替换

  堆中元素少一个(这就相当于删除堆的最后一个元素)

  删除完后此刻的堆可能被破坏,再向下调整就可以

  3.堆的销毁

  4.打印堆

抱歉!评论已关闭.