题目链接:http://poj.org/problem?id=1442 本来想复制一下,然后直接sort,结果T了。 在网上看了一下,有用两个队列做的,想了半天,没看懂什么意思。后来模拟一边,总算是懂了。 这里,将要输出的第k小的数存在最小堆中,输出,压入到最大堆中(最大堆是用来存第k小之前的数,更 ...
分类:
编程语言 时间:
2016-06-24 20:26:28
阅读次数:
131
堆建好之后,我们只需要返回数组的第一个元素,即能取到最小值 之后就需要做插入元素和删除元素的操作了。 删除元素和建堆过程有点类似,先从堆顶弹出要删除的元素,然后将最后一个元素拿出来,重新进行建堆,就可以得到一个新的最小堆了: 插入元素就稍微有些不同,插入元素是从最后一个位置插入元素然后依次向上扫描, ...
分类:
编程语言 时间:
2016-06-19 12:48:19
阅读次数:
133
学习了堆排序,使用python实现了一个优先队列结构,记录一下实现过程: 用一个python的list来表示堆结构,将list作为参数传入构造函数中,然后在构造函数中建堆: 堆一般都是一个完全二叉树,那么根据完全二叉树的性质,一个节点i的左子节点为i+1,右子节点为i*2+1,以最小堆为例,根节点一 ...
分类:
编程语言 时间:
2016-06-18 18:33:55
阅读次数:
156
本文将要介绍的斐波那契堆是一种保有最小堆性质的“森林集合”。和二叉堆一样,他可以用来实现优先队列,而且比二叉堆在某些操作上有更优的时间复杂度。比如插入操作,二叉堆插入一个结点需要从底向上调整堆结构,因此需要O(lgn)的时间,而斐波那契堆则只需要O(1)的时间。下面将会解析斐波那契堆的各个基本操作及其c/cpp实现代码。下面是一个斐波那契堆的结构示意图。除了插入操作,斐波那契堆总是保持着一个性质:...
分类:
其他好文 时间:
2016-06-12 02:48:56
阅读次数:
243
一、题目要求:
将K个有序链表合并为一个有序链表
二、实现方法:
方法一:利用最小堆方法
用一个大小为K的最小堆(用优先队列+自定义降序实现)(优先队列就是大顶堆,队头元素最大,自定义为降序后,就变成小顶堆,队头元素最小),先把K个链表的头结点放入堆中,每次取堆顶元素,然后将堆顶元素所在链表的下一个结点加入堆中。
整体测试代码:
#include...
分类:
编程语言 时间:
2016-06-02 13:48:28
阅读次数:
243
堆是什么?是一种特殊的完全二叉树,就像下面这棵树一样。
有没有发现这棵二叉树有一个特点,就是所有父结点都比子结点要小(注意:圆圈里面的数是值,圆圈上面的数是这个结点的编号,此规定仅适用于本节)。符合这样特点的完全二叉树我们称为最小堆。反之,如果所有父结点都比子结点要大,这样的完全二叉树称为最大堆。那这一特性究竟有什么用呢?
假如有14个数分别是99、5、36、7、22、17、4...
分类:
其他好文 时间:
2016-06-01 16:54:52
阅读次数:
315
查找数据10000个数中找出最大的前100个数创建一个100个数的小堆,最上面的数是这100个数中最小的;然后依次遍历(从101到10000),如果比它大,替换它。代码实现如下:https://github.com/HandsomeBoby/Heap/blob/master/GetTopK.h堆排序使用大堆进行数组的排序代码实现如下:h..
分类:
其他好文 时间:
2016-05-24 22:53:25
阅读次数:
181
在内存有限的情况下,求出一百万个数的前一百个。解题思路:首先想到的是将一百万个数分成一百份,一份就是一万个,然后以一万建一个最小堆求出前一百个,一百份又是一万个这样就能求出前一百个;代码如下:#include<windows.h>#include<vector>#include<ctime&..
分类:
其他好文 时间:
2016-05-20 14:41:45
阅读次数:
330
OJ5.2很简单,使用priority_queue实现了最小堆竟然都过了OJ……每次遇到relax的问题时都简单粗暴地重新push进一个节点…… 然而正确的实现应该是下面这样的吧,关键在于swap堆中元素时使用pos数组存储改变位置后的编号为k的节点对应在堆中的位置。下面这种实现也很简单,d,v,p ...
分类:
编程语言 时间:
2016-05-19 20:51:14
阅读次数:
238
堆数据结构是一种数组对象,它可以被视为一颗完全二叉树结构。最大堆:每个父节点都大于孩子节点。最小堆:每个父节点都小于孩子节点。堆排序的思想:对于给定的N个数据,初始时把这些记录看作是一颗顺序存储的二叉树,然后将其调整为一个最大堆,然后将堆的最后一个元素与堆顶..
分类:
编程语言 时间:
2016-05-17 01:08:47
阅读次数:
367