码迷,mamicode.com
首页 >  
搜索关键字:小堆    ( 496个结果
[数据结构]最小堆的类模板实现
堆数据结构是一种数组对象,它可以被视为一科完全二叉树结构。它的特点是父节点的值大于(小于)两个子节点的值(分别称为最大堆和最小堆)。它常用于管理算法执行过程中的信息,应用场景包括堆排序,优先队列等。1、根结点若有子树,则子树一定也是堆。2、根结点一定大于(或小于)子结点。因为要求堆必须是完全二叉树,所以可以用线性的数据结构,比如数组,来实现堆。利用数组实现,则对于长为N的堆中的元素从0到N-1排列...
分类:其他好文   时间:2015-07-30 19:34:42    阅读次数:414
堆的基本知识
堆 是一种经过排序的完全二叉树,其中任一非终端节点的数据值均不大于(或不小于)其左孩子和右孩子节点的值。二叉堆 是一种特殊的堆,二叉堆是完全二元树(二叉树)或者是近似完全二元树(二叉树)。二叉堆有两种:最大堆和最小堆。最大堆 根结点的键值是所有堆结点键值中最大者,父结点的键值总是大于或等于任何一个子...
分类:其他好文   时间:2015-07-22 12:38:23    阅读次数:108
温故知新,基础复习(二叉堆排序)
温故知新,基础复习(二叉堆排序)最小堆(最终数组的数据是降序),最大堆(最终数组的数据是升序)下例是最小堆#include #include void Swap(int Arra[],unsigned int LeftIndex,unsigned int RightIndex) { int TeampValue = Arra[LeftIndex]; Arra[LeftIndex]=Arr...
分类:编程语言   时间:2015-07-22 00:04:42    阅读次数:167
最小堆min_stack
class MinStack {public: void push(int x) { ele.push(x); if(min.empty()||x ele; stack min;};
分类:其他好文   时间:2015-07-20 14:21:23    阅读次数:92
算法导论 第十九章:斐波拉契堆
斐波拉契堆是由一组最小堆有序树组成,每棵树遵循最小堆性质,并且每棵树都是有根而无序的。所有树的根通过left和right指针来形成一个环形的双链表,称为该堆的根表。    对于一个给定的斐波拉契堆H ,可以通过指向包含最小关键字的树根指针H.min来访问。堆中每个节点还包含x.mark,x.degree两个域,x.degree表示x的子女表中的子女个数;x.mark表示从x上次成为另一个节点子女...
分类:编程语言   时间:2015-07-18 17:14:13    阅读次数:228
【优先队列】POJ1422-Black Box
【思路】建立一个小堆和一个大堆。大堆用来存放第1..index-1大的数,其余数存放在大堆,小堆的堆顶元素便是我们要求出的第index大的数。每次插入一个A(n),必须保证大堆中数字数目不变,故先插入小堆中。若此时小堆堆顶小于大堆堆顶,则交换堆顶元素;每次Get(),输出小堆的堆顶元素,并将它并入大...
分类:其他好文   时间:2015-07-16 11:25:49    阅读次数:149
最小堆及其操作函数
前几天在做Kth Largest Element in an Array 时使用到了堆,通过那倒题目也了解到了堆的make_heap,push_heap,pop_heap操作,看了C++ reference中的讲解也明白了heap_sort是什么回事。于是想着自己实现以下这四个函数。 堆的定义: 任意节点小于它的所有后裔,最小元在堆的根上(堆序性)。 堆总是一棵完全树。 #include <ios...
分类:其他好文   时间:2015-07-14 18:16:02    阅读次数:109
codeforces 556 D Case of Fugitive
这个题很显然,可以转换成这个问题: 有n-1个区间,m个数, 每个数最多只能用一次,第i个数只要能被第j个区间包含,那么这个数就可以放入这个区间内。 求出,当所有区间里都恰有一个数时的情况。 我们把所有区间按照下限升序排序,所有数升序排序之后分治即可。 分治过程,维护一个元素为区间的小堆,堆顶是上限最小的区间。 考虑第i个数,把所有能够包含它的区间都丢到堆中,然后从堆中丢一个区...
分类:其他好文   时间:2015-07-14 00:14:36    阅读次数:280
基本数据结构之堆
堆的定义堆是一个完全二叉树或者近似的完全二叉树堆的性质 父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。 每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。堆的存储一般都用数组来表示堆,i结点的父结点下标就为(i – 1) / 2。它的左右子结点下标分别为2 * i + 1和2 * i + 2 堆的特点插入元素和弹出堆顶元素的时间复杂度lg(n) 判断序列是不是堆根据性质判...
分类:其他好文   时间:2015-07-13 22:28:39    阅读次数:130
(算法)堆与堆排序
主要内容:1、什么是堆?2、如何建堆3、堆排序4、参考代码一、什么是堆?“堆”是个很有趣的数据结构,是个完全二叉树。“堆”的特性:每个节点的键值一定总是大于(或小于)它的父节点(大于:称为“最大堆”,小于:称为“最小堆”),或者说每个节点总是大于或小于它的子节点。对于最大堆而言,根节点为最大值;对于...
分类:编程语言   时间:2015-07-01 13:40:31    阅读次数:161
496条   上一页 1 ... 34 35 36 37 38 ... 50 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!