左偏树 定义 左偏树(英语:leftist tree或leftist heap),也可称为左偏堆、左倾堆,是计算机科学中的一种树,是一种优先队列实现方式,属于可并堆,在信息学中十分常见,在统计问题、最值问题、模拟问题和贪心问题等等类型的题目中,左偏树都有着广泛的应用。斜堆是比左偏树更为一般的数据结构 ...
分类:
其他好文 时间:
2020-07-29 12:45:04
阅读次数:
87
简介 String对象有个特殊的StringTable字符串常量池,为了减少Heap中生成的字符串的数量,推荐尽量直接使用String Table中的字符串常量池中的元素。 那么String.intern的性能怎么样呢?我们一起来看一下。 String.intern和G1字符串去重的区别 之前我们提 ...
分类:
其他好文 时间:
2020-07-28 10:15:18
阅读次数:
77
大顶堆和小顶堆 相关介绍可参看:北京大学空地学院数据结构与算法 第六章 6.8.2.2 小节 代码实现如下 class Heap: """二叉堆的实现 小顶堆""" def __init__(self): self.heapList = [0] # 默认一个 0 做占位,使得根节点的索引在 1 上 ...
分类:
编程语言 时间:
2020-07-27 23:32:44
阅读次数:
75
背景 之前做的海量数据数据展示,在预处理速度和渲染上还有有所欠缺,比如单个切片文件还是太大,本文中进行一些优化工作,使得一分钟处理完一千多万点数据的1-11级矢量切片,在线浏览数据请求时间控制在1s左右。 准备 软件环境:PostGIS,数据是微软开源的部分房屋数据public.california ...
分类:
其他好文 时间:
2020-07-26 16:02:32
阅读次数:
106
1 #include <iostream> 2 #include <algorithm> 3 #include <cstring> 4 #include <vector> 5 using namespace std; 6 const int SIZE = 1e6; 7 int heap[SIZE], ...
分类:
编程语言 时间:
2020-07-25 23:58:20
阅读次数:
91
“free store” VS “heap” 当我问你C++的内存布局时,你大概会回答: “在C++中,内存区分为5个区,分别是堆、栈、自由存储区、全局/静态存储区、常量存储区”。 如果我接着问你自由存储区与堆有什么区别,你或许这样回答: “malloc在堆上分配的内存块,使用free释放内存,而n ...
分类:
编程语言 时间:
2020-07-24 16:03:35
阅读次数:
87
堆(heap)是一个巨大的对象池。在这个对象池中管理着数量巨大的对象实例。而池中对象的引用层次,有的是很深的。一个被频繁调用的接口,每秒生成对象的速度,也是非常可观的。对象之间的关系,形成了一张巨大的网。虽然 Java 一直在营造一种无限内存的氛围,但对象不能只增不减,所以需要垃圾回收。 那 JVM ...
分类:
其他好文 时间:
2020-07-23 23:27:13
阅读次数:
135
二叉搜索树 性质:一个节点x左子树所有点的关键字都比x的关键字小,右子树所有点的关键字都比x的关键字大 treap “树堆” “Tree+Heap” 性质:每个点随机分配一个权值,使treap同时满足堆性质和二叉搜索树性质 复杂度:期望O(logn) 设每个节点的关键字是key,随机权值是rand ...
分类:
其他好文 时间:
2020-07-21 23:10:24
阅读次数:
67
简介 在之前的文章中,我们介绍了使用JOL这一神器来解析java类或者java实例在内存中占用的空间地址。 今天,我们会更进一步,剖析一下在之前文章中没有讲解到的更深层次的细节。一起来看看吧。 对象和其隐藏的秘密 java.lang.Object大家应该都很熟悉了,Object是java中一切对象的 ...
分类:
编程语言 时间:
2020-07-20 10:41:01
阅读次数:
62
启发式合并 概念 启发式算法是基于人类的经验和直观感觉,对一些算法的优化。 作用 可以启发式合并更加高级的数据结构,如 \(heap,~set,~splays\) 等 复杂度计算 每次把个数少的合并到个数多的?复杂度 \(O(min(m1,m2))\) 可是我们注意到,每次合并后个数为合并前少的部分 ...
分类:
其他好文 时间:
2020-07-19 18:00:25
阅读次数:
69