上一节我们写了树以及二叉树的知识
http://blog.csdn.net/wtyvhreal/article/details/43487095
堆是一种特殊的完全二叉树。
所有父节点都比子节点要小,这样的完全二叉树称为最小堆,反之叫最大堆。
下图一棵完全二叉树,调整为最小堆步骤:
向下调整的代码如下:
从上面可以得到:调...
分类:
编程语言 时间:
2015-02-04 18:50:47
阅读次数:
159
1.小根堆
若根节点存在左子女则根节点的值小于左子女的值;若根节点存在右子女则根节点的值小于右子女的值。
2.大根堆
若根节点存在左子女则根节点的值大于左子女的值;若根节点存在右子女则根节点的值大于右子女的值。
3.结论
(1)堆是一棵完全二叉树(如果公有h层,那么1~h-1层均满,在h层连续缺失若干个右叶子)。
(2)小根堆的根节点的值是最小值,大根堆的根节点的值是最大值。
(3)...
分类:
编程语言 时间:
2015-02-02 21:34:38
阅读次数:
208
package?org.rev.algorithm;
/**
?*?堆排序,时间复杂度为O(nlogn),是利用堆的性质进行的一种选择排序。
?*?
?*?大顶堆是一个完全二叉树,所有的父节点都大于或等于它的左右子节点,即a[i]>=a[2i+1]&&a[...
分类:
编程语言 时间:
2015-02-02 16:14:38
阅读次数:
191
本次主要记录一些经典的排序算法,其中包括冒泡排序、直接选择排序、插入排序、归并排序、快速排序、堆排序、希尔排序、桶排序以及计数排序和基数排序。首先会给出这些排序算法的基本思想,然后给出实现的代码,最后会给出其时间复杂度。
1:冒泡排序
思想:
(1):比较相邻的前后两个元素,如果后面的数据小于前面的数据,则交换这两个数据的位置。这样经过一次遍历,最小的元素将在第0个位置,属于”冒泡”.
(...
分类:
编程语言 时间:
2015-01-29 17:39:27
阅读次数:
288
下面是常见排序算法的速度比较:(从慢到快)
1、冒泡排序O(N^2)
2、简单选择排序O(N^2)
3、直接插入排序O(N^2)
4、折半插入排序O(N^2)
5、希尔排序,近似为O(N^1.25) (尚无定论,但可以确定是N~N^2之间的多项式时间复杂度)
6、堆排序O(NlogN)
7、归并排序O(NlogN)
8、快速排序O(NlogN)
一般来说是快排最快的。但是...
分类:
编程语言 时间:
2015-01-29 09:34:09
阅读次数:
274
各种排序运行时间比较以下表格展现各算法的运行时间:算法最坏情况运行时间平均情况/期望运行时间插入排序θ(n2)θ(n2)归并排序θ(nlgn)θ(nlgn)堆排序O(nlgn)—快速排序θ(n2)θ(nlgn)建立一个类,将之前写的各种排序算法纳入其中,Code如下: class SortMe...
分类:
编程语言 时间:
2015-01-28 21:04:02
阅读次数:
337
/** * 堆排序 *? * @param array * @param length */ public void heapSort(int[] array, int length) { // 调整为大根堆的形式 // 存储根堆的元素个数 int currentSize = length; int start = (currentSize - 2...
分类:
编程语言 时间:
2015-01-28 18:08:03
阅读次数:
180
STL容器(五)——heap
我们可以调用STL中的heap堆,实现建堆和堆排序等操作。
首先,STL中的heap默认构建的是最大堆,程序如下:
#include
#include
#include
using namespace std;
int main()
{
int a[]={2, 3, 5, 1, 9, 6};
vector vec(a...
分类:
其他好文 时间:
2015-01-28 10:00:58
阅读次数:
236
-------------------注明----------------以下内容来自于《算法导论》 lz新手,存在各种错误以及各种不合理的地方望大家指出堆排序时间复杂度为O(nlgn),并且就有空间原址性:任何时候都只需常数个额外的元素空间存储临时数据6.1 堆堆是一个数组,但可以被看做近...
分类:
编程语言 时间:
2015-01-28 06:09:16
阅读次数:
278
题目链接:
1105
一共两种操作 放入和取出(MAX)的
最多有10W次操作 ,暴力肯定会超时。
我们可以将盒子理解为一个大顶堆,即父节点大于左右子节点。
1.每次放入糖果时往上维护堆
2.取出时模仿堆排序的算法 将根节点(max)输出并与最后一个节点交换 再维护堆
代码:
#inclu...
分类:
其他好文 时间:
2015-01-27 11:20:47
阅读次数:
159