码迷,mamicode.com
首页 >  
搜索关键字:最大堆    ( 518个结果
堆排序
堆排序算法的时间复杂度为O(nlgn).在堆排序算法中,我们使用的是最大堆。(1)初始时候,堆排序算法利用BUILD-MAX-HEAP将输入数组A[1..n]建成最大堆。此时堆的根结点是最大元素,且该元素位于数组A[1]。接着将A[1]与A[n]互换,则可以将A[1..n]中的最大值置于A[n]。(...
分类:其他好文   时间:2014-07-22 23:16:35    阅读次数:404
顺序容器(幕后英雄) — heap
heap不属于STL容器,它扮演者priority queue的助手。heap是一种完全二叉树,可由数组来实现,但heap需要动态改变大小,所以最终选择了vector作为底层容器。STL默认提供最大堆。 题外话:分析heap的源码就能清楚的理解堆这种数据结构的例程,而STL库代码的质量又很高,所以看堆的代码,STL源码是一个很好的选择。 为了满足完全二叉树的性质,新插入的元素一...
分类:其他好文   时间:2014-07-22 23:04:53    阅读次数:363
堆是完全二叉树,一个大小为n的堆为一棵包含n个节点的完全二叉树。完全二叉树的根称为堆顶。当堆中每个节点的关键字值大于等于其双亲节点的关键字值,这样的堆称为最小堆,当子节点的值都小于等于其父节点时,称为最大堆。...
分类:其他好文   时间:2014-05-11 13:58:15    阅读次数:202
排序算法 堆排序
堆排序使用最大堆。堆排序:将初始序列构造成最大堆; 第一趟排序,将堆顶元素 A[0] 和堆底元素 A[n-1]进行交换,然后调用AdjustDown对堆顶元素进行向下调整,使剩余的前n-1个元素还是堆。然后使堆顶元素与A[n-2]交换,在进行向下调整。直到最后只剩下堆顶元素。...
分类:其他好文   时间:2014-05-11 07:37:51    阅读次数:304
【笔记】【数据结构】二叉堆
作用: 插入元素,O(lgN) 修改元素,O(lgN) 删除元素,O(lgN) 查询元素,O(1) 动态查询最值,O(NlgN)-O(lgN)-O(1) 核心操作: 上浮与下沉 最小堆:上浮是指较小值上浮,下沉是指较大值下沉。 最大堆:上浮是指较大值上浮,下沉是指较小值下沉。 具体操作: 预处理中,...
分类:其他好文   时间:2014-05-09 09:38:29    阅读次数:315
经典白话算法之优先级队列
概念 优先级队列,顾名思义,就是一种根据一定优先级存储和取出数据的队列。它可以说是队列和排序的完美结合体,不仅可以存储数据,还可以将这些数据按照我们设定的规则进行排序。优先级队列是堆的一种常见应用。有最大优先级队列(最大堆)和最小优先级队列(最小堆)。优先级队列是一种维护有一组元素构成的集合S的数据结构。 优先队列支持的基本运算 [cpp] view plai...
分类:其他好文   时间:2014-05-03 17:00:11    阅读次数:341
基于堆的最大最小优先级队列的实现
最大堆能够在O(1)的时间内取得集合中的最大值,并且在集合中加入新元素的时候,能够以O(Logn)的时间将新的元素插入到堆中。当取出最大的元素时,能够以O(Logn)的时间重新将堆整理成最大堆。最小堆同理。最大优先级队列的应用实例:基于优先级的作业调度,在所有等待调度的作业中,选择具有最大优先级作业...
分类:其他好文   时间:2014-05-01 09:21:41    阅读次数:386
poj 2431 Expedition 贪心+最大堆
当油量不够时从走过的油站中选最大加油量的 #include #include #include #include using namespace std; #define MAX_N 10005 struct node{ int dist,fuel; }t[MAX_N]; bool cmp(const node &a,const node &b) { return a.dist<b.dis...
分类:其他好文   时间:2014-04-28 10:44:43    阅读次数:335
518条   上一页 1 ... 50 51 52
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!