一、用模版实现大小堆如果不用模版的话,写大小堆,就需要分别实现两次,但是应用模版的话问题就简单多了,我们只需要实现两个仿函数,Greater和Less就行了,仿函数就是用类实现一个()的重载就实现了仿函数。这个看下代码就能理解了。再设计参数的时候,需要把模版设计成模版的..
分类:
编程语言 时间:
2016-04-27 14:22:08
阅读次数:
158
首先看一下堆的定义:对于n个元素的序列{k1,k2,k3,……,kn},当且仅当满足下列关系时,称之为堆:K(i) = K(2*i) && K(i) >= K(2*i+1) 此时的堆为大顶堆(i = 1,2,……,n/2(下取整))注意:堆得存储是用一维数组来存储的。若将堆对应的序列看成是一个完.....
分类:
编程语言 时间:
2015-09-27 13:47:07
阅读次数:
224
本段代码实现了建堆,维护最大堆的性质,堆排序函数,优先队列的相关函数(插入,找最大值,提取出最大值,增加关键值,增加元素),以及相关的测试 1 #include 2 #include 3 #include 4 #define LEFT(i) (2 * i) 5 #define RIG...
分类:
编程语言 时间:
2015-04-06 23:02:56
阅读次数:
193
1. 堆 二叉堆是一个数组,它可以被看成一个近似的完全二叉树。 二叉堆有两种形式:最大堆和最小堆。在最大堆中,父节点的值总是大于等于任何一个子节点的值。因此,堆中的最大元素放在根节点中,并且在任一子树中,该字数包含的所有节点的值都不大于该子树根节点的值。最小堆是指父节点的值总是小于或等于任一子节.....
分类:
编程语言 时间:
2014-12-30 14:56:14
阅读次数:
209
目前比较成熟的排序算法有选择排序,插入排序,希尔排序,归并排序,快速排序以及堆排序。如下表所示,比较了各个排序算法之间的优劣势。
上述算法的具体实现
选择排序:选择排序具体实现与分析
插入排序:插入排序具体实现与分析
希尔排序:希尔排序具体实现与分析
归并排序:归并排序具体实现与分析
快速排序:快速排序具体实现与分析
堆排序:堆排序具体实现与分析...
分类:
编程语言 时间:
2014-11-16 23:11:38
阅读次数:
377
一个堆可以被看作一棵二叉树和一个数组。堆排序主要分为以下几步:建堆,取出堆顶元素,调整堆,递归处理。本文中给出了在数组上建堆和调整以及堆排序的相关代码实现和实现过程的图示,以供参考。
分类:
编程语言 时间:
2014-05-28 19:58:31
阅读次数:
336