JVM内存设置相关参数,其他一些没有提到的参数可参考https://www.cnblogs.com/syuf/p/10183683.html。-server-Xss512k:每个线程堆栈大小-Xms32m:JVM初始堆大小-Xmx128m:JVM最大堆大小-XX:MaxInlineLevel=1:针 ...
分类:
其他好文 时间:
2020-02-07 10:57:48
阅读次数:
91
什么是二叉堆 二叉堆本质是完全二叉树一种。分为最大堆和最小堆两种。 字面理解最大堆任何一个父节点的值都大于等于它左右孩子的值,最小堆则与之相反。 二叉堆的根节点叫做堆顶。最大堆的堆顶就是整个堆最大的数,最小堆则与之相反。 举个例子:最大堆 堆的操作 二叉堆的基本操作:插入,删除,查询。 1.插入 插 ...
分类:
其他好文 时间:
2020-02-06 21:33:03
阅读次数:
76
1 #include <cstdio> 2 #include <iostream> 3 #include <queue> 4 5 using namespace std; 6 7 // 默认是最大堆 8 // 9 10 int main() 11 { 12 priority_queue<int> h ...
分类:
其他好文 时间:
2020-02-05 16:31:29
阅读次数:
73
堆的详细创建过程:参考:https://www.jianshu.com/p/21bef3fc3030 明白堆的详细创建过程的前提是要理解Shift Down。 但是这明显不符合最大堆的定义,所以我们需要让该完全二叉树转换成最大堆!怎么转换成一个最大堆呢? 最大堆有一个特点就是其各个子树都是一个最大堆 ...
分类:
其他好文 时间:
2020-02-02 19:38:51
阅读次数:
61
优先级队列的底层实现是堆(最大堆、最小堆) 堆的特点 1. 完全二叉树 2. 每个节点的值都必须大于等于或小于等于子树中节点的值(对应最大堆、最小堆) 3. 往堆中插入和删除一个元素的时间复杂度都是O(logn) 一、实现 最大堆和最小堆实现原理基本一样,下面实现一个最大堆 输出 二、堆排序 1.每 ...
分类:
其他好文 时间:
2020-01-07 14:44:07
阅读次数:
81
①维护堆的性质,max_heapify通过让A[i]的值在最大堆中“逐级下降”,从而使得下标i为根节点的子树重新遵循最大堆性质。 void max_heapify(int A[], int i) { int left = 2 * i; int right = 2 * i + 1; int large ...
分类:
编程语言 时间:
2020-01-07 01:02:59
阅读次数:
89
堆排序(Heap Sort)是指利用堆这种数据结构所设计的一种排序算法。因此,学习堆排序之前,有必要了解堆! 我们知道,堆分为"最大堆"和"最小堆"。最大堆通常被用来进行"升序"排序,而最小堆通常被用来进行"降序"排序。鉴于最大堆和最小堆是对称关系,理解其中一种即可。本文将对最大堆实现的升序排序进行 ...
分类:
编程语言 时间:
2020-01-04 22:29:55
阅读次数:
93
序言 二叉堆本质上是一种完全二叉树, 它分为两个类型。 1. 最大堆 2. 最小堆 最大堆 什么是最大堆呢? 最大堆的任何一个父节点的值, 都大于或等于它左、 右孩子节点的值。 最小堆 什么是最小堆呢? 最小堆的任何一个父节点的值, 都小于或等于它左、 右孩子节点的值。 二叉堆的根节点叫作堆顶。最大 ...
分类:
其他好文 时间:
2020-01-03 00:39:23
阅读次数:
76
堆排序 最大堆调整:将堆的末端子节点作调整,使得子节点永远小于父节点 创建最大堆:将堆中的所有数据重新排序 堆排序:移除位在第一个数据的根节点,并做最大堆调整的递归运算 ...
分类:
编程语言 时间:
2019-12-19 23:19:17
阅读次数:
103
1. 堆排序 算法核心思想 堆排序利用堆的特点, 最大堆要求节点的元素都要不小于其孩子,最小堆要求节点元素都不大于其左右孩子,那么处于最大堆的根节点的元素一定是这个堆中的最大值,每次把堆顶元素放置在二叉树的尾部,然后重新建堆这样循环处理,最终就能完成排序。 核心算法逻辑如下: 建堆 把堆顶的元素和最 ...
分类:
编程语言 时间:
2019-12-09 21:22:00
阅读次数:
86