今天有人推荐了一个排序算法:最小堆排序算法。号称能处理10亿数据的排序问题. 正好将要面临2.5亿数据的查询计算比对问题,从没面对过如此大的数据量,之前处理过最大的表不过3000万,心里正有些惴惴不安。正好把这个算法拿来学习揣摩一番。 刚开始随手写了个递归排序,本以为想法是比对一下 ...
MinHeap基本性质 最小堆中的最小元素值出现在根结点 堆顶 堆中每个父节点的元素值都小于等于其孩子结点 如果存在 MinHeap用途 .求一个数列中的第K大的数,建立一个大小为K的最小堆,堆顶就是第K大的数 .递归去除最顶元素,用于取top K等。 MinHeap可设置容量上限N带来两个好处: 内存占用可控 因为上限N的存在,可提高添加和删除元素的速度 以上述思想,接下来开始java编码: 我 ...
2017-10-23 19:55 0 4514 推荐指数:
今天有人推荐了一个排序算法:最小堆排序算法。号称能处理10亿数据的排序问题. 正好将要面临2.5亿数据的查询计算比对问题,从没面对过如此大的数据量,之前处理过最大的表不过3000万,心里正有些惴惴不安。正好把这个算法拿来学习揣摩一番。 刚开始随手写了个递归排序,本以为想法是比对一下 ...
摘自:《啊哈算法》 我们要用1, 2, 5, 12, 7, 17, 25, 19, 36, 99, 22, 28, 46, 92来建立最小堆,并且删除最小的数,并增加一个数23 如何建立这个堆: 我们还有更快的方法可以建立一个堆 思路:直接把1, 2, 5, 12 ...
自由树 自由树是一个连通的,无回路的无向图。 令G=(V,E)为一个无向图。下面的表述是等价的。 1) G是自由树。 2) G中任意两个顶点由唯一一条简单路径得到。 ...
一、 满二叉树 一个深度为k,节点个数为2^k-1的二叉树为满二叉树,即一棵树深度为k,没有空位。 二、完全二叉树 一棵深度为k有n个节点的二叉树,对树中节点按从上至下、从左至右的顺序进行 ...
最大堆性质:任一节点比其左右节点值都大。 最小堆性质:任一节点比其左右节点值都小。 应用:解决TopK问题。 TopK问题是指从大量数据(源数据)中获取最大(或最小)的K个数据。 ...
1.堆:通常通过二叉堆,实为二叉树的一种,分为最小堆和最大堆,具有以下性质: 任意节点小于它的所有后裔,最小元在堆的根上。 堆总是一棵完全树 将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。 2.最小堆实现: 插入: 1) 将新插入的元素 ...
参考:https://blog.csdn.net/guoweimelon/article/details/50904346 一、堆树的定义 堆树的定义如下: (1)堆树是一颗完全二叉树; ...
简介 当一棵二叉树的每个结点都大于它的两个子结点时,被称为堆有序; 如果我们用指针来表示堆有序的二叉树,那么每个元素都需要三个指针来找到它的上下结点;但是如果我们使用完全二叉树,只用数组而不需要指针就可以表示; 什么是最小堆呢? 最小堆就是在二叉堆的基础上,符合了每个结点都比他的子结点要小 ...