堆(线程共享):虚拟机启动时创建,用于存放对象实例,几乎所有的对象(包含常量池)都在堆上分配内存, 当对象无法再该空间申请到内存时将抛出OutOfMemoryError异常。同时也是垃圾收集器管理的主要区域。 可通过 -Xmx –Xms 参数来分别指定最大堆和最小堆 ...
分类:
编程语言 时间:
2018-10-25 18:00:50
阅读次数:
209
给定K个有序数组,每个数组有n个元素,想把这些数组合并成一个有序数组 可以利用最小堆完成,时间复杂度是O(nklogk),具体过程如下: 创建一个大小为n*k的数组保存最后的结果创建一个大小为k的最小堆,堆中元素为k个数组中的每个数组的第一个元素重复下列步骤n*k次:每次从堆中取出最小元素(堆顶元素 ...
分类:
编程语言 时间:
2018-10-25 12:03:16
阅读次数:
342
/** * * * Copyright 1994 JsonInternational * All rights reserved. - https://github.com/Jasonandy/Java-Core-Advanced * Created by Jason * * */ package ... ...
分类:
编程语言 时间:
2018-10-20 14:58:23
阅读次数:
180
一、堆和二叉堆的介绍 堆的定义 堆(heap),这里所说的堆是数据结构中的堆,而不是内存模型中的堆。堆通常是一个可以被看做一棵树,它满足下列性质: [性质一] 堆中任意节点的值总是不大于(不小于)其子节点的值; [性质二] 堆总是一棵完全树。将任意节点不大于其子节点的堆叫做最小堆或小根堆,而将任意节 ...
分类:
其他好文 时间:
2018-10-14 16:35:57
阅读次数:
159
堆:什么是堆?又该怎么理解呢? ①堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质: ·堆中某个节点的值总是不大于或不小于其父节点的值; ·堆总是一棵完全二叉树。 将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。 ②堆是在程序运行时,而 ...
分类:
其他好文 时间:
2018-10-13 19:48:07
阅读次数:
149
排序算法 排序算法两阶段 第一阶段(比较排序) 插入排序 合并排序 堆排序 快速排序 第二阶段(非比较排序) 计数排序 基数排序 桶排序 第一阶段:比较排序 插入排序 插入排序的主要思想 : 将当前的元素放入前面合适的位置 插入排序的实现细节 : heap_sort小结: heap_sort中最重要 ...
分类:
编程语言 时间:
2018-10-06 20:40:56
阅读次数:
188
eclipse.ini文件中的各项参数说明 -vmargs: 说明后面是VM的参数 -Xms40m: 虚拟机占用系统的最小内存 -Xmx256m: 虚拟机占用系统的最大内存 -XX:PermSize:最小堆大小。一般报内存不足时,都是说这个太小, 堆空间剩余小于5%就会警告,建议把这个稍微设大一点, ...
分类:
系统相关 时间:
2018-09-28 17:41:31
阅读次数:
158
原创 堆排序和快速排序的时间复杂度是相同的,掌握堆排序也是非常重要的! 用一维数组存储堆,有以下规律: 一个结点的下标为i,其左儿子下标为i*2,右儿子下标为i*2+1; 一棵二叉树的最后一个非叶结点的下标为n/2; 首先讲述堆向下调整的过程: 假设从根结点开始向下调整堆(调整为最小堆),将结点i与... ...
分类:
编程语言 时间:
2018-09-11 21:30:53
阅读次数:
171
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6438 Buy and Resell Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
分类:
其他好文 时间:
2018-08-26 19:37:27
阅读次数:
200
堆的简单理解 以k1,k2,k3,k4.....kn为示例: 对于任意存在子节点的ki,k(2i)是其左子树节点,k(2i+1)是其右子树节点, 大堆序满足条件,k(i) >=k(2i) && k(i)>=k(2i+1) (1 ≤ i ≤ n/2) 小堆序满足条件,k(i) <= k(2i)且k(i ...
分类:
编程语言 时间:
2018-08-25 14:16:29
阅读次数:
145