zoukankan      html  css  js  c++  java
  • Heap(data structure)——堆(数据结构)(源自维基百科)

    源地址:http://en.wikipedia.org/wiki/Heap_%28data_structure%29

    在计算机科学领域,堆是指一个特定的基于数结构的数据结构,其必须满足堆属性:

    如果A是B的父级节点,那么A和B的排序规则,和整棵数的排序规则一致。也就是说,要么整棵树中父节点都大于或等于字节点,最大的节点是根节点(最大堆);要么整棵树中所有的父节点都小于或者等于子节点,最小的节点是根节点(最小堆)。堆结构在一些有关图的算法中有着重要作用,比如宽度优先遍历的Dijkstra's algrithm;在堆排序中也起着重要作用。

    如上图所示,堆结构中,兄弟节点或者堂兄弟节点之前的大小顺序并没有指明,也没有指明按节点顺序遍历下来的结果的顺序。上面所述的规则只针对节点和其父节点。每个节点的字节点数量根据实现方案得不同而不同,不过大多数情况下会有两个字节点,即二叉堆。

    堆结构是抽象数据类型 优先级队列(priority queue)的最有效的实现方案。事实上,优先级队列通常会被叫做“堆”,即使他是使用其他实现方案实现的。注意,尽管“堆”和“栈”、“队列”在名字上有类似,但是后两者是抽象数据类型,而堆是一个确定的数据结构。

    这里的“堆”不能跟操作系统内存管理里面的“堆”搞混,操作系统里面的堆是指动态分配内存时所使用的地址。“堆”最开始是用来表示这种数据结构的。

  • 相关阅读:
    Mac 下的 Homebrew 简介及安装
    配置Mac打开ntfs的外设磁盘硬盘的原生读写/Mac OS上使用不同格式的磁盘
    ztree使用 (一) 递归后台的数据
    springboot整合redis 配置文件及配置类(二)
    springboot整合redis 配置文件及配置类(一)
    java登录拦截器
    获取小程序二维码
    java合成图片
    微信 获取手机号
    js+html5点击赋值到剪贴板
  • 原文地址:https://www.cnblogs.com/riasky/p/3473240.html
Copyright © 2011-2022 走看看