数据结构与算法——堆的基本存储
创始人
2025-06-01 21:09:44
0

目录

一、概念及其介绍

二、适用说明

三、结构图示

四、Java 实例代码

五.堆和栈的区别


一、概念及其介绍

堆(Heap)是计算机科学中一类特殊的数据结构的统称。

堆通常是一个可以被看做一棵完全二叉树的数组对象。

堆满足下列性质:

  • 堆中某个节点的值总是不大于或不小于其父节点的值。
  • 堆总是一棵完全二叉树。

二、适用说明

堆是利用完全二叉树的结构来维护一组数据,然后进行相关操作,一般的操作进行一次的时间复杂度在 O(1)~O(logn) 之间,堆通常用于动态分配和释放程序所使用的对象。

若为优先队列的使用场景,普通数组或者顺序数组,最差情况为 O(n^2),堆这种数据结构也可以提高入队和出队的效率。

三、结构图示

二叉堆是一颗完全二叉树,且堆中某个节点的值总是不大于其父节点的值,该完全二叉树的深度为 k,除第 k 层外,其它各层 (1~k-1) 的结点数都达到最大个数,第k 层所有的结点都连续集中在最左边。

其中堆的根节点最大称为最大堆,如下图所示:

我们可以使用数组存储二叉堆,右边的标号是数组的索引

 

假设当前元素的索引位置为 i,可以得到规律:

parent(i) = i/2(取整)
left child(i) = 2*i
right child(i) = 2*i +1

 四、Java 实例代码

package runoob.heap;/*** 堆定义*/
public class MaxHeap {private T[] data;private int count;// 构造函数, 构造一个空堆, 可容纳capacity个元素public MaxHeap(int capacity){data = (T[])new Object[capacity+1];count = 0;}// 返回堆中的元素个数public int size(){return count;}// 返回一个布尔值, 表示堆中是否为空public boolean isEmpty(){return count == 0;}// 测试 MaxHeappublic static void main(String[] args) {MaxHeap maxHeap = new MaxHeap(100);System.out.println(maxHeap.size());}
}

五.堆和栈的区别

  • 栈Stack:是私有的,每创建一个线程就会创建一个栈,栈中存放数据为当前线程中局部基本类型的数据,(java中定义的八种基本类型:boolean、char、byte、short、int、long、float、double),非基本类型的对象在JVM栈上仅存放一个指向堆上的地址
  • 堆Heap :JVM用来存储对象实例以及数组值的区域,可以认为Java中所有通过new创建的对象的内存都在此分配,Heap中的对象的内存需要等待GC进行回收

相关内容

热门资讯

“攒三集五”的意思 “攒三集五”的意思 成语拼音: [zǎn sān jí wǔ] ...
“虎视鹰瞵”的意思 “虎视鹰瞵”的意思 成语拼音: [hǔ shì yīng lín] ...
“逾淮为枳”的意思 “逾淮为枳”的意思 成语拼音: [yú huái wéi zhǐ] ...
“鸣珂锵玉”的意思 “鸣珂锵玉”的意思 成语拼音: [míng kē qiāng yù] ...
寻人启事 寻人启事范文(通用8篇)  寻人启事,汉语词语,发布寻人启事寻人,是失踪者及其亲友间相互寻找的一种基...
“乌合之卒”的意思 “乌合之卒”的意思 成语拼音: [wū hé zhī zú] ...
入木三分成语解释 入木三分成语解释  入木三分,是汉语的一则成语,出自唐·张怀瓘《书断·王羲之》。下面是小编为大家整理...
“逾闲荡检”的意思 “逾闲荡检”的意思 成语拼音: [yú xián dàng jiǎn] ...
形容勇敢的词语 形容勇敢的词语大全  词语,是词和短语的合称,包括词(含单词、合成词)和词组(又称短语),组成语句文...
“磨拳擦掌”的意思 “磨拳擦掌”的意思 成语拼音: [mó quán cā zhǎng] ...
小学生元旦表演什么节目好   2016年元旦晚会目创意推荐:  1、成语连珠,就是先说个成语每个组或每个人用最后一个字接成语…...
岩的成语及解释 关于岩的成语及解释大全  以“岩”字开头的成语及解释如下:  [岩穴之士] 指隐士。古时隐士多山居,...
“胸无成算”的意思 “胸无成算”的意思 成语拼音: [xiōng wú chéng suàn] ...
“导德齐礼”的意思 “导德齐礼”的意思 成语拼音: [dǎo dé qí lǐ] ...
描写人物外貌的成语 有关描写人物外貌的成语  导语:描写人物外貌的成语有很多,你都知道哪些呢?下面是小编为你准备的有关描...
《公孙仪相鲁而嗜鱼》文言文阅... 《公孙仪相鲁而嗜鱼》文言文阅读答案  公孙仪相鲁而嗜鱼,一国尽争买鱼而献之。公孙仪不受。其弟子谏曰:...
“不可磨灭”的意思 “不可磨灭”的意思 成语拼音: [bù kě mó miè] ...
王尔德童话英文版 王尔德童话英文版(通用9篇)  王尔德是19世纪英国第一位文艺天才,他风流不羁的外表下有一颗纯洁的童...
三字经儿歌朗读全文 三字经儿歌朗读全文  《三字经》难免含有一些精神糟粕、艺术瑕疵,但其独特的思想价值和文化魅力仍然为世...
苏轼被贬黄州时写的诗有哪些? 苏轼被贬黄州时写的诗有哪些?  导语:小编整理了苏轼在被贬在黄州时写的诗词,有兴趣的朋友可以看看。 ...