码迷,mamicode.com
首页 >  
搜索关键字:小顶堆    ( 200个结果
wikioi 2573 大顶堆与小顶堆并用
题目描述 Description 我们使用黑匣子的一个简单模型。它能存放一个整数序列和一个特别的变量i。在初始时刻,黑匣子为空且i等于0。这个黑匣子能执行一系列的命令。有两类命令: ADD(x):把元素x放入黑匣子;GET:把i加1的同时,输出黑匣子内所有整数中第i小的数。牢记第i小的数是当黑匣子中的元素已非降序排序后位于第i位的元素。 下面的表6_4是一个11个命令的例...
分类:其他好文   时间:2014-07-22 22:39:34    阅读次数:247
wikioi 1245 小顶堆
题目描述 Description 有两个长度为 N 的序列 A 和 B,在 A 和 B 中各任取一个数可以得到 N^2 个和,求这N^2 个和中最小的 N个。 输入描述 Input Description 第一行输入一个正整数N;第二行N个整数Ai 且Ai≤10^9;第三行N个整数Bi, 且Bi≤10^9 输出描述 Output Descr...
分类:其他好文   时间:2014-07-21 23:28:09    阅读次数:249
堆排序
先看下堆的概念:堆是一种数据结构,逻辑上是一种完全的二叉树,在存储上是数组对象。 堆分为小顶堆和大顶堆,顾名思义:小顶堆是指顶部的元素是最小的,大顶堆是指顶部的元素师最大的。 这样只要我们能够得到这样的堆,每次将顶部的元素和数列的最后一个元素进行交换,然后再对剩下的元素进行建堆,接着以此类推这样的做法,便可以得到排好的数列了。 根据上面所述,堆排序的关键是:建堆。建堆也分为调堆和建堆过程;...
分类:其他好文   时间:2014-07-19 02:47:16    阅读次数:213
利用堆实现堆排序&优先队列
假设要实现非递减排序,则需要用要大顶堆。此处设计到三个大顶堆的操作:(1)自顶向下调整操作:MaxHeapify(对应堆的SiftDown操作)、(2)利用数组建立大顶堆:BuildMaxHeap、(3)不断交换堆顶元素(堆的最大元素)和堆的末尾元素,实现非递减排序。 优先队列分为最大优先队列和最小优先队列,分别借助于大顶堆和小顶堆。 优先队列有以下基本操作:(1)提取队列中的最大(小)元素;(2)提取队列中的最大(小)元素并从队列中删除;(3)将队列中元素为x的关键字减少(增大)到k,这里假设k的值不大(...
分类:其他好文   时间:2014-06-22 20:58:26    阅读次数:319
数据结构之(二叉)堆
(二叉)堆是一个数组,是一颗近似完全二叉树,分为大顶堆&小顶堆。表示堆的数组A有两个属性:(1)A.length表示数组元素的个数;(2)A.heap-size表示有多少个堆元素存储在数组A中。更多的关于堆的性质的介绍:算法导论第三版:p85-p89、编程珠玑:p141-p145。 堆的操作主要包括堆插入、堆删除两个,而堆插入设计到FixUp操作(自底向上调整),堆删除涉及到FixDown操作(自顶向下调整,大顶堆时对应算法导论上的MAX-HEAPIFY操作)。 本文主要给出的是大顶堆和小顶堆的基本操作的C...
分类:其他好文   时间:2014-06-22 13:58:41    阅读次数:158
【Algorithm】堆排序
堆是一种完全二叉树结构,并且其满足一种性质:父节点存储值大于(或小于)其孩子节点存储值,分别称为大顶堆、小顶堆。堆一般采用数组进行存储(从下标为0开始)。则父节点位置为i,那么其左孩子为2*i + 1,右孩子为2*i + 2。一. 算法描述 堆排序主要分为两个过程:建堆:先使长度为N数组形成一...
分类:其他好文   时间:2014-06-18 00:08:54    阅读次数:207
数据结构 - 堆排序(heap sort) 详解 及 代码(C++)
堆排序(heap sort) 详解 及 代码(C++)本文地址: http://blog.csdn.net/caroline_wendy堆排序包含两个步骤: 第一步: 是建立大顶堆(从大到小排序)或小顶堆(从小到大排序), 从下往上建立;第二步: 是依次交换堆顶和堆底, 并把交换后的堆底输出, 只排列剩余的堆, 从上往下建立;代码:/* * main.cpp * * Created on:...
分类:编程语言   时间:2014-06-16 22:12:58    阅读次数:311
排序 之 堆排序 归并排序
堆的概念 堆是具有下列性质的完全二叉树:每个节点的值都大于或等于其左右孩子结点的值,称为大顶堆;或着每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。 堆排序 堆排序(Heap Sort)就是利用堆(假设利用大顶堆)进行排序的方法。它的基本思想是,将待排序的序列构造成一个大顶堆。此时,整个序列...
分类:其他好文   时间:2014-05-15 16:18:31    阅读次数:329
POJ3253 Fence Repair 小顶堆+贪心
给了你N个木棒,求把他们组装成一根需要的最小花费,每次只能选两根组装在一起,需要的花费为两个木棒之和, 以前遇到过把一整根切开的,那个是DP,这个则有些类似,可是大胆的猜测了一下,直接每次选取所有木棒中最短的两根,这样就可以了,那么贪心是适用的,但是数量很多,而且两根最短的组装好了得插回去,这样不可能每次都排序吧, 这题首先优先队列肯定是可以做的, 最小堆也是可以的,每次都选出堆里的...
分类:其他好文   时间:2014-05-07 12:44:17    阅读次数:337
《Cracking the Coding Interview》——第18章:难题——题目9
2014-04-29 04:18题目:有一连串的数被读入,设计一个数据结构,能随时返回当前所有数的中位数。解法:用一个大顶堆,一个小顶堆将数分成数量最接近的两份,就能轻松得到中位数了。代码: 1 // 18.9 A stream of integers are passed to you, you....
分类:其他好文   时间:2014-04-29 14:16:52    阅读次数:423
200条   上一页 1 ... 18 19 20
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!