二叉堆简介平时所说的堆,若没加任何修饰,一般就是指二叉堆。同二叉树一样,堆也有两个性质,即结构性和堆序性。正如AVL树一样,对堆的以此操作可能破坏者两个性质中的一个,因此,堆的操作必须要到堆的所有性质都被满足时才能终止。结构性质堆是一棵完全填满的二叉树,因为完全二叉树很有规律,所以它可以用一个数组表...
                            
                            
                                分类:
其他好文   时间:
2014-07-10 11:53:48   
                                阅读次数:
1258
                             
                         
                    
                        
                            
                            
                                以下是最近学习各种算法的代码实现:#include #include #include #include typedef int EleType;typedef int (*CompFunc)(void *,void *);int IntComp(void * a,void *b){ if(*...
                            
                            
                                分类:
其他好文   时间:
2014-07-08 00:15:54   
                                阅读次数:
293
                             
                         
                    
                        
                            
                            
                                排序算法基本陈述容易理解,之后会详细解析希尔排序、堆排序、归并排序、快速排序、简单选择排序、直接插入排序等排序算法。...
                            
                            
                                分类:
其他好文   时间:
2014-07-01 06:37:39   
                                阅读次数:
188
                             
                         
                    
                        
                            
                            
                                1. 定义
二叉树(BinaryTree)是n(n≥0)个结点的有限集,它或者是空集(n=0),或者由一个根结点及两棵互不相交的、分别称作这个根的左子树和右子树的二叉树组成。
二叉树的5中基本形态:
 
满二叉树:一棵深度为k且有2k-1个结点的二又树称为满二叉树,每一层上的结点数都达到最大值。
完全二叉树:若一棵二叉树至多只有最下面的两层上结点的度数可以小于2,并且最下...
                            
                            
                                分类:
其他好文   时间:
2014-06-30 09:57:51   
                                阅读次数:
149
                             
                         
                    
                        
                            
                            
                                第3节 堆排序把n个元素建立一个堆,首先将这n个结点以自顶向下、从左到右的方式从1到n编码,这样可以把n个结点转换成一颗完全二叉树紧接着从最后一个非叶子结点(结点编号为n/2)开始到根节点(结点编号为1),逐个扫描所有结点,根据需要将当前结点向下调整,直到以当前结点为根结点的子树符合堆的特性。#in...
                            
                            
                                分类:
其他好文   时间:
2014-06-27 18:35:05   
                                阅读次数:
120
                             
                         
                    
                        
                            
                            
                                堆(heap)是一种非常重要的数据结构(这里我们讨论的是二叉堆),它是一棵满足特定条件的完全二叉树,堆的定义如下:
       堆是一棵树完全二叉树,对于该完全二叉树中的每一个结点x,其关键字大于等于(或小于等于)其左右孩子结点,而其左右子树均为一个二叉堆。...
                            
                            
                                分类:
其他好文   时间:
2014-06-27 08:41:58   
                                阅读次数:
225
                             
                         
                    
                        
                            
                            
                                在前面的文章STL之heap相关操作算法中介绍了堆的相关操作算法,由于堆的注意主要作用是用于排序,我们也知道堆排序的时间复杂度为o(nlogn),是一种不稳定的排序算法,利用堆这一数据结构,我们可以很快第获取一个大数据中最大(或最小)的k个数。同时,上篇文章中,也提出了相关heap算法的一些问题...
                            
                            
                                分类:
其他好文   时间:
2014-06-27 08:16:59   
                                阅读次数:
171
                             
                         
                    
                        
                            
                            
                                实现优先队列结构主要是通过堆完成,主要有:二叉堆、d堆、左式堆、斜堆、二项堆、斐波那契堆、pairing 堆等。1. 二叉堆1.1. 定义完全二叉树,根最小。存储时使用层序。1.2. 操作(1). insert(上滤)插入末尾 26,不断向上比较,大于26则交换位置,小于则停止。(2). delet...
                            
                            
                                分类:
其他好文   时间:
2014-06-27 00:53:45   
                                阅读次数:
369
                             
                         
                    
                        
                            
                            
                                前段时间将排序算法从新整理了一下,并对工作原理,时间复杂度,空间复杂度进行了一些简单分析。内容主要包括快速排序,堆排序,归并排序等三种常用排序算法。...
                            
                            
                                分类:
其他好文   时间:
2014-06-25 06:59:49   
                                阅读次数:
323
                             
                         
                    
                        
                            
                            
                                堆排序思想:
堆排序,顾名思义,就是基于堆。堆分为最大堆和最小堆,其实就是完全二叉树。最大堆要求节点的元素都要大于其孩子,最小堆要求节点元素都小于其左右孩子,两者对左右孩子的大小关系不做任何要求,其实很好理解。有了上面的定义,我们可以得知,处于最大堆的根节点的元素一定是这个堆中的最大值。其实我们的堆排序算法就是抓住了堆的这一特点,每次都取堆顶的元素,将其放在序列最后面,然后将剩余的元素重新调整为...
                            
                            
                                分类:
编程语言   时间:
2014-06-24 15:43:29   
                                阅读次数:
193