码迷,mamicode.com
首页 >  
搜索关键字:堆排序    ( 1851个结果
【数据结构学习】-堆与堆排序
堆是一种非常有用的数据结构,可用来设计高效的排序算法和优先队列。一个堆是一颗具有如下性质的二叉树:1)它是一颗完全二叉树;2)每个节点都大于等于其任何子节点。 如上图是一个最大堆,我们可以用数组来描述它。根节点在数组位置0,两个孩子在位置1和2。对于位于位置i的节点,其左孩子在2i+1,其右孩子在2i+2,其父节点在(i-1)/2。利用堆进行排序,是堆一个很重要的用途。下面是堆排序的代码...
分类:编程语言   时间:2015-08-27 18:52:16    阅读次数:145
堆排序
1、堆建立首先观察一个堆的向下调整过程。由于不满足最大堆的条件,对于不满足的元素,选择子节点中的最大元素交换。并更新被交换的子节点作为当前节点,继续调整,直至成为叶节点或满足最大堆的条件。 1 #define left(i) (2*i+1) 2 #define right(i) 2*(i+1) 3 ...
分类:编程语言   时间:2015-08-26 19:23:42    阅读次数:129
初级排序算法之堆排序
堆排序的思想堆排序的具体算法,思想是每次取出堆的最顶层根节点,即数组下标为0,然后与最后一个节点即i+1交换。 参考地址建堆过程: 首先将原始队列构建成完全二叉树 然后从第一个非叶子节点开始,比较当前节点和其孩子节点,将最大的元素放在当前节点,交换当前节点和最大节点元素。 注意:如果根节点是a[0],那么第一个非叶子节点就是倒数第二层的最后一个根节点,下标为length/2-1 将当前元素前面所...
分类:编程语言   时间:2015-08-26 15:48:18    阅读次数:143
排序方法总结和实现
由于很多大神已经总结过各种排序算法的性能及适合坏境,这里便不再总结,只是强调几个重点。 (1)快排的空间复杂度不是o(1),是o(logn)~o(n); (2)四种不稳定的排序算法:简单选择,快排,希尔和堆排序 (3)冒泡排序最有情况下时间复杂度可优化为o(n); (4)归并排序的空间复杂度为o(n); (5)快排在整体倒序的情况下时间复杂度为o(n2) (6)建一个最大堆的复杂度为o...
分类:编程语言   时间:2015-08-26 12:01:32    阅读次数:184
《github一天,一个算术题》:堆算法接口(堆排序、堆插入和堆垛机最大的价值,并删除)
阅览、认为、编写代码!/********************************************* * copyright@hustyangju * blog: http://blog.csdn.net/hustyangju * 题目:堆排序实现,另外实现接口:取堆最大值并删除、堆插...
分类:编程语言   时间:2015-08-25 21:33:32    阅读次数:164
堆排序
堆排序的堆不是指内存区域里面的堆,而是一种数据结构。堆可以分为“大顶堆”和“小顶堆”,堆其实是一种特殊的二叉树,“大顶堆”中根元素总比叶子元素大,“小顶堆”中根元素总比叶子节点小。当然要创建这样的堆结构还是有一定难度的,请自行参考其他资料。 这里我们使用到的是 STL 中的 priority_queue 这个结构,这个默认就是一个“大顶堆”,所以用这个数据结构我们来实现排序就很简单了。代码...
分类:编程语言   时间:2015-08-21 19:35:26    阅读次数:209
选择排序(直接选择排序、堆排序)——Java
选择排序 思想:每趟从待排序的记录序列中选择关键字最小的记录放置到已排序表的最前位置,直到全部排完。 关键问题:在剩余的待排序记录序列中找到最小关键码记录。 方法: –直接选择排序 –堆排序 (1)简单的选择排序   1、基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数...
分类:编程语言   时间:2015-08-21 15:37:35    阅读次数:227
数据结构与算法之堆与堆排序
在数据结构中,堆其实就是一棵完全二叉树。我们知道内存中也有一块叫做堆的存储区域,但是这与数据结构中的堆是完全不同的概念。在数据结构中,堆分为大根堆和小根堆,大根堆就是根结点的关键字大于等于任一个子节点的关键字,而它的左右子树又分别都是大根堆;小根堆与大根堆恰好相反。在C++的STL中优先队列pr.....
分类:编程语言   时间:2015-08-20 22:13:28    阅读次数:215
排序算法之堆排序
1、 堆排序的思想 输入一个数组,利用一组二叉树的操作使其变成有序的数组,就是堆排序 堆排序利用的是二叉树的思想,操作对象是数组,所以数组需要在逻辑上映射到二叉树上,由于数组的下标是连续的,而二叉树中只有完全二叉树和满二叉树是连续的,所以将数组元素逐个映射到完全二叉树上,然后配备一系列的操作即可.....
分类:编程语言   时间:2015-08-19 22:56:57    阅读次数:231
STL源代码分析——STL算法sort排序算法
前言 因为在前文的《STL算法剖析》中,源代码剖析许多,不方便学习,也不方便以后复习。这里把这些算法进行归类,对他们单独的源代码剖析进行解说。本文介绍的STL算法中的sort排序算法,SGI STL中的排序算法不是简单的高速排序,而是交叉利用各种排序:堆排序、插入排序和高速排序;这样做的目的是提高....
分类:编程语言   时间:2015-08-19 22:53:42    阅读次数:134
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!