注:本节主要讨论最大堆(最小堆同理)。 一、堆的概念 堆,又称二叉堆。同二叉查找树一样,堆也有两个性质,即结构性和堆序性。 1、结构性质: 堆是一棵被全然填满的二叉树。有可能的例外是在底层。底层上的元素从左到右填入。这种树称为全然二叉树(complete binary tree)。下图就是这样一个样 ...
分类:
其他好文 时间:
2017-05-14 12:22:30
阅读次数:
126
堆是一种特殊的完全二叉树,其特点是所有父节点都比子节点要小,或者所有父节点都比字节点要大。前一种称为最小堆,后一种称为最大堆。 比如下面这两个: 那么这个特性有什么作用?既然题目是堆排序,那么肯定能用来排序。想要用堆排序首先要创建一个堆,如果对4 3 6 2 7 1 5这七个数字做从小到大排序,需要 ...
分类:
编程语言 时间:
2017-05-10 17:54:30
阅读次数:
257
堆是一种特殊的二叉树。它具有下面两个性质: 1、每一个节点的值大于或等于其每一个子节点的值。 2、该树全然平衡,最后一层的叶子都处于最左側的位置。 有最大堆和最小堆之分。以上定义是最大堆的定义,最小堆的定义例如以下: 1、每一个节点的值小于或等于其每一个子节点的值; 2、该树全然平衡,最后一层的叶子 ...
分类:
编程语言 时间:
2017-05-01 11:59:14
阅读次数:
164
c++中的priority_queue优先队列是第二有用、第二常用的数据结构。用法:先#include<queue>再priority_queue<类型> 名称(假设为a)1、a.push(元素); 插入并堆化2、a.top() 堆顶3、a.pop(); 弹出堆顶4、默认最大堆,即堆顶是最大的;若要 ...
分类:
其他好文 时间:
2017-04-30 14:08:25
阅读次数:
133
1. -Xms 初始堆 -Xmx 最大堆 -Xmn 新生代 -XX:PermSize 初始分配的非堆内存 -vmargs 说明后面是VM的参数,所以后面的其实都是JVM的参数了 -XX:MaxPermSize=128M JVM最大允许分配的非堆内存,按需分配 -XX:MaxNewSize 就是tom ...
分类:
其他好文 时间:
2017-04-28 09:20:16
阅读次数:
169
常见配置汇总 堆设置 -Xms:初始堆大小 -Xmx:最大堆大小 -XX:NewSize=n:设置年轻代大小 -XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4 -XX:SurvivorRatio=n:年轻代中Eden ...
分类:
其他好文 时间:
2017-04-27 13:25:00
阅读次数:
203
以下配置主要针对分代垃圾回收算法而言。 堆大小设置 年轻代的设置很关键 JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。在Windows Se ...
分类:
其他好文 时间:
2017-04-27 12:34:54
阅读次数:
222
package com.hzins.suanfa; import java.util.Arrays; /** * 堆排序 * 思路,建立最大堆并把最大的数移到最后,从第一行到倒数第二行建立最大堆 * 建立最大堆: * for循环 以lastindex的父节点为起始位,每此循环自减,直到为1 * 对于... ...
分类:
编程语言 时间:
2017-04-26 22:57:17
阅读次数:
215
1.算法步骤: 2.代码实现: public static void heapSort(int[] arr){ for(int i=(arr.length-2)/2;i>=0;i--){ siftDown(arr,i,arr.length-1);//从最后一个非叶节点开始,自上向下比较,形成最大堆 ...
分类:
编程语言 时间:
2017-04-10 13:15:59
阅读次数:
192