码迷,mamicode.com
首页 >  
搜索关键字:二叉堆    ( 401个结果
二叉树学习之堆排序
认识堆是从堆排序开始的 二叉堆是完全二叉树或者是近似完全二叉树,堆存储在数组中: 根结点下标为0时,下标为n的元素的子结点下标分别为2*n+1,2*n+2,其父结点下标为(n-1)/2 二叉堆的特性: 1、父结点的键值总是>=( 2、每个结点的左右子树都是二叉堆 当父结点的键值总是大于或等于任何一个子节点的键值时为最大堆。 当父结点的键值总是小于或...
分类:编程语言   时间:2014-11-04 17:35:16    阅读次数:262
排序(二)
(一) 堆排序:由于优先队列可以花费O(NlogN)时间的排序,基于该想法的排序称之为堆排序。建立N个元素的二叉堆,基本上花费的时间为O(N),再执行N次删除操作。按照顺序呢,最小的元素先离开该堆。通过将这些元素...
分类:编程语言   时间:2014-11-03 14:45:36    阅读次数:301
第六章——堆排序
一 堆 堆给人的感觉是一个二叉树,但是其本质是一种数组对象,因为对堆进行操作的时候将堆视为一颗完全二叉树,树种每个节点与数组中的存放该节点值的那个元素对应。所以堆又称为二叉堆,堆与完全二叉树的对应关系如下图所示:二叉堆可以分为两种形式:最大堆和最小堆。在这两种堆中,结点的值都要满足堆的性质。在最大堆...
分类:编程语言   时间:2014-11-02 20:51:42    阅读次数:244
白话经典算法系列之七 堆与堆排序
堆排序与高速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先解说下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是全然二叉树或者是近似全然二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)不论什么一个子节点的键值。2.每一个结点的左子树和右...
分类:编程语言   时间:2014-11-01 13:11:20    阅读次数:187
二叉堆的实现
/* ** 二叉堆的实现 ** 堆最重要的性质是儿子的值大于等于父亲的值,除此之外, ** 树的节点是按照从上到下,从左到右的顺序紧凑排列的。 ** ** 插入:首先在末尾插入,然后不断向上提升直到没有大小颠倒为止。 ** 删除:首先把堆的最后一个元素复制到根节点并且删除最后一个 ** 节点。然后不断向下交换直到没有大小颠倒为止。在向下交换过程 ** 中,如果有两个儿子,那么选择数值较小的儿子...
分类:其他好文   时间:2014-10-31 17:18:17    阅读次数:194
堆排序
堆排序,就是利用二叉堆的特性来完成排序的工作。这里假定我们要完成对一个数组进行从小到大排序的工作,那么利用最小堆(见《二叉堆 - 最小堆》)的特性,对于一个已经建好的最小堆,我们每次以DeleteMin函数取出最小的元素,放入一个临时数组中,如此一来,就完成了对该数组的排序。时间复杂度的话,建立堆的...
分类:编程语言   时间:2014-10-29 18:42:11    阅读次数:164
二叉堆 - 最大堆
与上篇《二叉堆 - 最小堆》类似,只不过堆序(heap order)从内部节点小于左右子节点变成了内部节点大于左右子节点。代码如下: 1 #include 2 #include 3 4 #define MIN (1items =(Item*)malloc((maxItems+1)*si...
分类:其他好文   时间:2014-10-29 16:32:17    阅读次数:270
二叉堆 - 最小堆
二叉堆:一般我们拿来用的就是最大堆和最小堆。最小堆:每个节点的值比它的左右子节点的值要大。代码实现如下:参考Mark Allen Weiss《数据结构和算法分析》(第二版) 1 #include 2 #include 3 4 #define MIN (1items =(Item*)ma...
分类:其他好文   时间:2014-10-28 23:55:06    阅读次数:997
10.26最后的模拟:改造二叉树
改造二叉树【题目描述】小Y在学树论时看到了有关二叉树的介绍:在计算机科学中,二叉树是每个结点最多有两个子结点的有序树。通常子结点被称作“左孩子”和“右孩子”。二叉树被用作二叉搜索树和二叉堆。随后他又和他人讨论起了二叉搜索树。什么是二叉搜索树呢?二叉搜索树首先是一棵二叉树。设key[p]表示结点p上的...
分类:其他好文   时间:2014-10-26 16:53:12    阅读次数:163
白话经典算法系列之七 堆与堆排序
堆排序与高速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先解说下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是全然二叉树或者是近似全然二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)不论什么一个子节点的键值。2.每一个结点的左子树和右...
分类:编程语言   时间:2014-10-22 20:16:05    阅读次数:228
401条   上一页 1 ... 32 33 34 35 36 ... 41 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!