我今天在处理topk问题的时候需要一个堆容器,翻了半天资料没找到,最后偶然看到了这张图: 啧啧啧,这张图上居然没有堆(heap)。 好像java中真的没有听说过堆这么个容器…… 只好自己动手丰衣足食了 接口: 实现: 最大堆: 最小堆: 其实最大堆和最小堆的区别只是改了下沉和上浮里面的两个大于小于号 ...
分类:
编程语言 时间:
2018-04-02 01:05:45
阅读次数:
180
2.3.4 树 遍历:前中后序,宽度优先。 二叉树的特例:二叉搜索树、堆(最大堆和最小堆,用于找最值)、红黑树(c++ STL中的很多数据结果就是基于这实现的); 题7-重建二叉树:递归,设置四个位点; 题8-二叉树的下一个节点 ...
分类:
编程语言 时间:
2018-03-28 21:58:29
阅读次数:
186
import java.util.Arrays; public class HeapSort { //数组arr下标为0的位置不使用,待排序数字放入下标为 1 ~ arr.length-1 的位置,并对这些位置上的元素排序 public static void sort(int arr[]) { H ...
分类:
编程语言 时间:
2018-03-22 21:24:02
阅读次数:
232
首先我们先来看一个由普通数组构建的普通堆。 然后我们通过前面的方法对它进行堆化(heapify),将其构建为最大堆。 结果是这样的: 对于我们所关心的这个数组而言,数组中的元素位置发生了改变。正是因为这些元素的位置发生了改变,我们才能将其构建为最大堆。 可是由于数组中元素位置的改变,我们将面临着几个 ...
分类:
其他好文 时间:
2018-03-15 17:55:38
阅读次数:
215
1.介绍一下你熟悉的几种排序算法以及它们的时间复杂度 ①冒泡排序 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换。 算法的平均时间复杂度为O(n^2)。 但是若在某趟排序中未发现气泡位置的交换,则说明待排序的无序区中所有 ...
分类:
编程语言 时间:
2018-03-11 19:10:19
阅读次数:
163
第7章,神奇的树。 第一节,树的特点。 第二节,二叉树。 第三节,优先队列--堆(特殊的完全二叉树) 最小堆:All node-father smaller than node-sons 最大堆:相反。 ...
分类:
编程语言 时间:
2018-03-02 14:58:45
阅读次数:
170
堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下 ...
分类:
其他好文 时间:
2018-03-02 01:16:15
阅读次数:
171
概念 性质: 1.堆是一颗完全二叉树,用数组实现。 2.堆中存储数据的数据是局部有序的。 最大堆:1.任意一个结点存储的值都大于或等于其任意一个子结点中存储的值。 2.根结点存储着该树所有结点中的最大值。 最小堆:1.任意一个结点存储的值都小于或等于其惹你一个子结点存储的值。 2.根结点存储着该树所 ...
分类:
其他好文 时间:
2018-02-28 16:23:14
阅读次数:
212
以下配置主要针对分代垃圾回收算法而言。 一、堆大小设置 年轻代的设置很关键 JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。在Windows ...
分类:
编程语言 时间:
2018-02-28 15:17:17
阅读次数:
256
一 堆 堆给人的感觉是一个二叉树,但是其本质是一种数组对象,因为对堆进行操作的时候将堆视为一颗完全二叉树,树种每个节点与数组中的存放该节点值的那个元素对应。所以堆又称为二叉堆,堆与完全二叉树的对应关系如下图所示: 二叉堆可以分为两种形式:最大堆和最小堆。在这两种堆中,结点的值都要满足堆的性质。 在最 ...
分类:
编程语言 时间:
2018-02-23 16:01:48
阅读次数:
210