代码如下: 说明: 上面堆排序的关键在于buildMaxHeap()方法。该方法用于对data数组从0到lastindex索引范围内的元素建大顶堆,这样就选择出数组索引从0到lastindex范围内的最大元素。采用循环不断重复上面过程即可完成堆排序。 对于堆排序算法而言,假设有n项数据,需要进行n- ...
分类:
编程语言 时间:
2017-08-19 20:03:40
阅读次数:
182
1、堆排序算法描写叙述: (1)定义 n个keyword序列Kl,K2,…,Kn称为(Heap)。当且仅当该序列满足例如以下性质(简称为堆性质): 1)ki<=k(2i)且ki<=k(2i+1)(1≤i≤ n/2)。当然。这是小根堆。大根堆则换成>=号。//k(i)相当于二叉树的非叶子结点,K(2i ...
分类:
编程语言 时间:
2017-07-29 18:56:52
阅读次数:
206
/* * (最大)堆的向下调整算法 * * 注:数组实现的堆中,第N个节点的左孩子的索引值是(2N+1),右孩子的索引是(2N+2)。 * 其中,N为数组下标索引值,如数组中第1个数对应的N为0。 * * 参数说明: * a -- 待排序的数组 * start -- 被下调节点的起始位置(一般为0,... ...
分类:
编程语言 时间:
2017-06-03 11:27:25
阅读次数:
235
建立最大的k个数,可以通过快速排序来实现,也可以通过堆排序来实现。我们来看堆排序的实现过程。 其中,也是有两种思路:第一种思路是:把数组里的所有的数建堆(O(nlogn)),然后交换k次,通过堆排序实现。(klogn) 时间复杂度是:O((n+k)logn) = O(nlogn) 第二种思路是:先用 ...
分类:
其他好文 时间:
2016-08-27 16:40:45
阅读次数:
173
比如数组A: [ 0: 5, 1: 2, 2: 4, 3: 3, 4: 1 ] 排序后的结果为:[1, 2, 3, 4, 5],但是有时候会有需求想要保留排序前的位置到一个同位数组里,如前例则为:[4, 1, 3, 2, 0],因此就利用堆排序写了一个单独的数组排序过程加以实现。 代码如下: 当然, ...
分类:
编程语言 时间:
2016-08-27 00:29:51
阅读次数:
748
优先级队列及小顶堆排序实现/**@fileHeapSort.h*@copyrightpersonal*@brief优先级队列及堆排序*@versionV1.0.0*@authorfangyuan*@date2015/12/31*@note测试版本*/#include"iostream"usingnamespacestd;template<classT>classCPriQueue{private:intm_iIndex;intm_iMaxsize..
分类:
编程语言 时间:
2016-01-30 18:37:59
阅读次数:
199
实现堆排序需要解决两个问题:1、如何将n个待排序的数建成堆2、输出堆顶元素之后。如何调整剩余n-1个元素,使其成为一个新堆使用最大堆来进行堆排序算法实现,所谓堆排序就是每次交换堆顶元素与堆中最后一个元素,然后对前面的堆中的元素从堆顶开始调整。具体代码如下: 1 #include 2 3 usin.....
分类:
编程语言 时间:
2016-01-20 18:44:51
阅读次数:
151
今天看堆排序,以前没注意,写个小程序记忆一下。堆排序实际上就是个完全二叉树,试着画一棵试试,记忆算法很简单,大根堆满足跟比叶子大,小根堆反之。算法思想见百度百科:1,先将初始文件R[1..n]建成一个大根堆,此堆为初始的无序区2,再将关键字最大的记录R[1](即堆顶)和无序区的最后一个记录R[n]交...
分类:
编程语言 时间:
2015-10-30 18:37:48
阅读次数:
249
阅览、认为、编写代码!/********************************************* * copyright@hustyangju * blog: http://blog.csdn.net/hustyangju * 题目:堆排序实现,另外实现接口:取堆最大值并删除、堆插...
分类:
编程语言 时间:
2015-08-25 21:33:32
阅读次数:
164
1、堆排序算法描述:
(1)定义
n个关键字序列Kl,K2,…,Kn称为(Heap),当且仅当该序列满足如下性质(简称为堆性质):
1)ki=号。//k(i)相当于二叉树的非叶子结点,K(2i)则是左子节点,k(2i+1)是右子节点
2)若将此序列所存储的向量R[1..n]看做是一棵完全二叉树的存储结构,则堆实质上是满足如下性质的完全二叉树:
树中任一非叶子结点的关键...
分类:
编程语言 时间:
2015-07-22 18:51:11
阅读次数:
116