美文网首页
数据结构:堆(Heap)

数据结构:堆(Heap)

作者: mingweiqi | 来源:发表于2019-01-07 14:19 被阅读0次

堆就是用数组实现的二叉树

所有它没有使用父指针或者子指针。堆根据“堆属性”来排序,“堆属性”决定了树中节点的位置。

堆的常用方法:

     构建优先队列

    支持堆排序

    快速找出一个集合中的最小值(或者最大值)

堆属性

堆分为两种:最大堆最小堆,两者的差别在于节点的排序方式。

在最大堆中,父节点的值比每一个子节点的值都要大。在最小堆中,父节点的值比每一个子节点的值都要小。这就是所谓的“堆属性”,并且这个属性对堆中的每一个节点都成立。

例子:

这是一个最大堆,,因为每一个父节点的值都比其子节点要大。10比7和2都大。7比5和1都大。

根据这一属性,那么最大堆总是将其中的最大值存放在树的根节点。而对于最小堆,根节点中的元素总是树中的最小值。堆属性非常的有用,因为堆常常被当做优先队列使用,因为可以快速的访问到“最重要”的元素。

注意:堆的根节点中存放的是最大或者最小元素,但是其他节点的排序顺序是未知的。例如,在一个最大堆中,最大的那一个元素总是位于 index 0 的位置,但是最小的元素则未必是最后一个元素。--唯一能够保证的是最小的元素是一个叶节点,但是不确定是哪一个。

相关文章

  • container之heap

    go的heap实现了堆,关于堆可以看下数据结构:堆(Heap)[https://www.jianshu.com/p...

  • 堆的一些基础知识一

    堆几种常见的数据结构 _heap_info malloc_state malloc_chunk _heap_inf...

  • 数据结构:堆(Heap)

    堆就是用数组实现的二叉树,所有它没有使用父指针或者子指针。堆根据“堆属性”来排序,“堆属性”决定了树中节点的位置。...

  • 数据结构:堆(Heap)

    堆就是用数组实现的二叉树 所有它没有使用父指针或者子指针。堆根据“堆属性”来排序,“堆属性”决定了树中节点的位置。...

  • 算法与数据结构(四)堆排序:优先队列实现

    堆排序 排序次要的,接触新的数据结构;堆 堆和优先队列 Heap and Priority Queue 什么是优先...

  • 8. Python3 中的数据结构

    Python更多的数据结构 集合(set) 堆(heap) 双向队列(double-ended queue) 在P...

  • 堆(Heap)

    堆 堆也是一种树状的数据结构,常见的堆实现有: 二叉堆(Binary Heap, 完全二叉堆) 多叉堆(D-hea...

  • 数据结构--堆--插入、删除、堆排序

    今天,我们来谈一谈一个很常用的数据结构---堆。堆(Heap),也叫优先队列(Priority Queue)。是一...

  • 堆Heap

    Heap Heap: 堆。一般也称作Priority Queue(即优先队列) 堆我们一般用一个二叉树来表示。即一...

  • heap (堆)

    堆: 说实话在仔细研究堆之前,我一直将它跟堆栈混为了一个东西。还想着这是一个后进先出的东西。我们来看一下什么是堆:...

网友评论

      本文标题:数据结构:堆(Heap)

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