二叉堆是一种特殊的二叉树。 它是一颗完全二叉树,表示树的每一层都有左侧和右侧子节点(除了最后一层的叶节点),并且最后一层的叶节点尽可能都是左侧子节点,这叫结构特性。 二叉堆不是最小堆就是最大堆。最小堆允许快速导出树的最小值,最大堆允许快速导出输的最大值。所有的节点都大于等于(最大堆)或小于等于(最小 ...
分类:
编程语言 时间:
2020-07-05 00:28:25
阅读次数:
65
一、什么是堆? 维基百科的解释是:堆是一种特别的树状数据结构,它需要满足任意的子节点必须都大于等于(最大堆)或者小于等于(最小堆)其父节点。 二、堆排序 堆排序是通过二叉堆数据结构实现,二叉堆满足一下两个特性: 1、满足对的基本特性 2、完全二叉树,除了最底层外,其它层都已填充满,且是从左到右填充。 ...
分类:
编程语言 时间:
2020-06-27 09:18:07
阅读次数:
80
#JVM内存溢出1、堆内存溢出堆内存中主要存放对象、数组等,只要不断地创建这些对象,并且保证GCRoots到对象之间有可达路径来避免垃圾收集回收机制清除这些对象,当这些对象所占空间超过最大堆容量时,就会产生OutOfMemoryError的异常。堆内存异常示例如下:/**设置最大堆最小堆:-Xms20m-Xmx20m运行时,不断在堆中创建OOMObject类的实例对象,且while执行结束之前,G
分类:
其他好文 时间:
2020-06-17 16:46:28
阅读次数:
59
通过上一节的学习,我们了解到 二叉堆的本质还是一个完全二叉树 无序数组通过构造、通过下沉构造可以构造为最小堆 通过上浮构造可以构造为最大堆 来说今天的堆排序算法之前、首先请和我一起、再次了解一下二叉堆元素的删除 二叉堆删除元素 这里假设我们这里有这样的一个完全二叉树如下: 1、删除顶部1号元素【暂且 ...
分类:
编程语言 时间:
2020-06-03 13:39:39
阅读次数:
67
概述 堆(Heap)是一个可以被看成近似完全二叉树的数组。树上的每一个结点对应数组的一个元素。除了最底层外,该树是完全充满的,而且是从左到右填充。—— 来自:《算法导论》 堆包括最大堆和最小堆:最大堆的每一个节点(除了根结点)的值不大于其父节点;最小堆的每一个节点(除了根结点)的值不小于其父节点。 ...
分类:
其他好文 时间:
2020-06-02 00:14:57
阅读次数:
67
题意 两种操作,第一种可以向序列里加数,第二种查询长度为k时的序列的第i大元素。 思路 优先队列维护最大堆和最小堆分别存放前i-1大的元素前k-i小的元素。 将当前序列的元素压入最小堆,如果最小堆的最小数大于最大堆的最大数则进行交换,保证最大堆中的所有数小于最小堆。 因为i值每进行一次自增1,所以每 ...
分类:
其他好文 时间:
2020-05-28 09:14:27
阅读次数:
86
堆(heap) 定义 堆是一种比较特殊的数据结构,它是利用完全二叉树的结构来维护一组数据,可以看做是一棵树的数组对象,说白了,堆就是用数组实现的二叉树。根据根节点的值还分为大根堆和小根堆。在最大堆中,父节点的值比每一个子节点的值都要大。在最小堆中,父节点的值比每一个子节点的值都要小。例如下图就是一个 ...
分类:
其他好文 时间:
2020-05-24 15:13:48
阅读次数:
71
数据结构与算法实验报告 修理牧场 姓名:孙瑞霜 一、实验目的 1、熟练掌握学习的每种结构及其相应算法; 2、理论联系实际,会对现实问题建模并设计相应算法。 3、优化算法,使得算法效率适当提高 二、实验要求: 1. 认真阅读和掌握教材上和本实验相关的内容和算法; 2. 上机将各种相关算法实现; 3. ...
分类:
其他好文 时间:
2020-05-24 11:59:33
阅读次数:
107
一.概述 收集算法(JVM之垃圾回收-垃圾收集算法)是内存回收的抽象策略,垃圾收集器就是内存回收的具体实现。 JVM规范对于垃圾收集器的应该如何实现没有任何规定,因此不同的厂商、不同版本的虚拟机所提供的垃圾收集器差别较大,这里只看HotSpot虚拟机。 就像没有最好的算法一样,垃圾收集器也没有最好, ...
分类:
其他好文 时间:
2020-05-22 13:05:10
阅读次数:
37
二叉堆是一种特殊的堆,二叉堆是完全二元树(二叉树)或者是近似完全二元树(二叉树)。 二叉堆有两种:最大堆和最小堆。 最大堆:父结点的键值总是大于或等于任何一个子节点的键值。 最小堆:父结点的键值总是小于或等于任何一个子节点的键值。 下面举例子来看看一个二叉堆插入数据的例子(最小堆,即queue里面的 ...
分类:
编程语言 时间:
2020-05-21 14:39:00
阅读次数:
49