#pragmaonce
#include<iostream>
#include<vector>
usingnamespacestd;
classBigHeap//仿函数类大堆返回true
{
public:
booloperator()()
{
returntrue;
}
};
classSmallHeap//仿函数类小堆返回false
{
public:
booloperator()()
{
returnfalse;
}
};..
分类:
编程语言 时间:
2016-03-20 18:08:38
阅读次数:
197
摘自:《啊哈算法》 我们要用1, 2, 5, 12, 7, 17, 25, 19, 36, 99, 22, 28, 46, 92来建立最小堆,并且删除最小的数,并增加一个数23 如何建立这个堆: //建堆 n = 0; for (int i = 1; i <= m; i++) { n++; h[n]
分类:
编程语言 时间:
2016-03-10 10:52:26
阅读次数:
209
计算机如何工作小解 “20135224陈实 + 自己博客园 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” 汇编代码如下: 基本理解工作过程如下: 根据汇编语言:在g函数中,开头语句都是创建堆栈起始语push
分类:
其他好文 时间:
2016-02-23 13:18:35
阅读次数:
155
从书本上看的,这里记录下。1.时间复杂度(平均时间复杂度)插入排序:O(N2);希尔排序:O(N2) Hibbard增量的希尔排序平均:O(N7/6) 堆排序:O(NlogN) (每次需要构建堆,比较次数较多;为了减少开销,每次删除的数据放到头(从小到大排)或尾(从大到小排)归并排序:O(Nl...
分类:
编程语言 时间:
2016-01-11 23:58:54
阅读次数:
361
继上篇文章讲到堆的实现之后http://blog.csdn.net/tuke_tuke/article/details/50357939,下面可以使用堆来实现堆排序。
在堆的基础上实现堆排序的思路很简单:(这里使用最小堆,当然最大堆也可以)
最小堆MinHeap就是最小的数在堆的根元素的位置。首先把一组数建堆,然后再不断的移除堆的根元素,由于每次移除的根元素都是现有堆的最小元素,故可得到...
分类:
编程语言 时间:
2015-12-21 16:20:39
阅读次数:
179
堆排序 堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点的值都不大于其父节点的值,即A[PARENT[i]] >= A[i]。在数组的非降序排序中,需要使用的就是大根堆,因为根据大根堆的要求可知,最大的值一定在堆顶。既然是堆排序,自然需要先建立一个堆,而建堆的核心内容是调整堆,使二叉树满....
分类:
编程语言 时间:
2015-12-03 11:33:12
阅读次数:
244
/**
*@paramargs
*/
@SuppressWarnings({"rawtypes","unchecked"})
publicstaticvoidmain(String[]args){
Stackstack=newStack();//创建堆栈对象
System.out.println("11111,absdder,29999.3三个元素入栈");
stack.push(newInteger(11111));//向栈中压入整数11111
printStack(..
分类:
编程语言 时间:
2015-11-04 19:48:28
阅读次数:
193
看上去好像很简单的样子··然后折磨了我好久····主要是没仔细弄明白。堆分为最小堆和最大堆,以二叉树的形式存在,最小堆即根节点为整个树的最小值,最大堆则是根节点为最大值。建堆(以最大堆为例):首先数据以数组形式存储(int a[]或vector a),若二叉树的根节点从0开始计数,则节点 i 的左右...
分类:
其他好文 时间:
2015-10-22 00:00:42
阅读次数:
399
堆排序,这个上座率也比较高。 一般出现的问题是这样的,在 N 个数中找到前 K 个最大(小)的。 这种问题就是比较典型的大(小)顶堆,即堆顶的数值大于堆的孩子。 堆排序主要有建堆,或者叫做调整堆,及取堆顶。...
分类:
编程语言 时间:
2015-09-16 14:24:17
阅读次数:
168
堆排序的思想堆排序的具体算法,思想是每次取出堆的最顶层根节点,即数组下标为0,然后与最后一个节点即i+1交换。
参考地址建堆过程:
首先将原始队列构建成完全二叉树
然后从第一个非叶子节点开始,比较当前节点和其孩子节点,将最大的元素放在当前节点,交换当前节点和最大节点元素。
注意:如果根节点是a[0],那么第一个非叶子节点就是倒数第二层的最后一个根节点,下标为length/2-1
将当前元素前面所...
分类:
编程语言 时间:
2015-08-26 15:48:18
阅读次数:
143