堆是什么?刚接触到这个概念估计都摸不着头脑,不知道堆是什么样个东西。简单介绍下,堆数据结构是一种数组对象,它可以被视为一棵完全二叉树结构。堆结构的二叉树存储有两种情况:(1).最大堆:每个父节点的都大于孩子节点。(2).最小堆:每个父节点的都小于孩子节点。举个例子..
分类:
其他好文 时间:
2016-04-23 23:09:57
阅读次数:
246
堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先讲解下什么是数据结构中的二叉堆。
二叉堆的定义
二叉堆是完全二叉树或者是近似完全二叉树。
二叉堆满足二个特性:
1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。
2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。
当父结点的键值总...
分类:
编程语言 时间:
2016-04-22 19:40:49
阅读次数:
188
堆 用数组存储一个堆,看成一个近似的完全二叉树。堆有自己的尺寸(不一定与数组长度相同)。 堆的性质:父结点比儿子结点大是最大堆;父节点比儿子节点小是最小堆。 本文以最大堆为例。 对于一个结点i,其父结点标号是i/2向下取整,左子结点是2*i,右子结点是2*i+1。 堆的高度是log(n)。 堆排序的 ...
分类:
编程语言 时间:
2016-04-18 17:13:58
阅读次数:
378
1、堆的定义
堆实际上是一棵完全二叉树,其任何一非叶节点满足性质:
Key[i]<=key[2i+1]&&Key[i]=Key[2i+1]&&key>=key[2i+2]。在最大堆中,最大元素放在根节点中,且对任一非根节点,它的值小于或等于其双亲节点值。最小对则相反,根节点是最小元素。2、堆排序的思想
利用最大堆(最小堆)堆顶记录的是最大关键字(最小...
分类:
编程语言 时间:
2016-04-18 13:46:30
阅读次数:
164
#pragma once#include <vector> // 小堆template<class T> //仿函数struct Less{ bool operator() (const T& l, const T& r) { return l < r; // operator< }}; templ ...
分类:
其他好文 时间:
2016-04-12 22:12:19
阅读次数:
118
//本次练习的是堆排序和堆的大数据应用//堆排序的时间复杂度为O(n)//堆的大数据应用应选择小堆进行处理//但当数据超过100000时速度明显变慢,可能是建立小堆的时候慢》》》》》有没有更优的方法#include<iostream>#include<vector>#include<time.h>usingna..
分类:
编程语言 时间:
2016-04-10 19:35:33
阅读次数:
245
内存结构分析 计算机中内存的使用者有两种:操作系统、程序语言 栈区:主要用于全局存储变量名,主要的特点是运行速度快,存储的数据是长度固定(并不是值的大小) 堆区:主要用于存储对象,主要的特点是连续,数据数据可以动态的扩展与收缩。效率相对低 代码段:存储的源代码的二进制形式 数据段:还可以分为全局区与... ...
分类:
其他好文 时间:
2016-04-05 16:07:07
阅读次数:
149
"2.h"
#include<iostream>
#include<vector>
#include<assert.h>
usingnamespacestd;
template<classT>
structLess
{
booloperator()(constT&left,constT&right)
{
returnleft<right;
}
};
template<classT>
structGreater
{
b..
分类:
编程语言 时间:
2016-03-29 22:29:56
阅读次数:
501
堆排序的要点在于构建一个最大推或者最小堆。那么什么是最大堆、最小堆呢?
概念介绍
二叉堆:二叉堆是一棵完全二叉树
二叉堆的性质:
1、二叉堆的父节点的键值总是大于或者等于(小于或者等于)子节点的键值
2、当父节点的键值大于或者等于子节点的键值时为最大堆,当父节点的键值小于或者等于子节点时时最小堆
3、通常对于给定的结点i可以根据在数组中的位置求出其父节点的位置、左右子节点的位置,对于下...
分类:
编程语言 时间:
2016-03-26 07:47:01
阅读次数:
147
#pragmaonce
#include<iostream>
#include<vector>
usingnamespacestd;
classBigHeap//仿函数类大堆返回true
{
public:
booloperator()()
{
returntrue;
}
};
classSmallHeap//仿函数类小堆返回false
{
public:
booloperator()()
{
returnfalse;
}
};..
分类:
编程语言 时间:
2016-03-20 18:08:38
阅读次数:
197