码迷,mamicode.com
首页 >  
搜索关键字:堆排序 完全二叉树    ( 2516个结果
堆排序
二叉堆: 二叉堆是完全二叉树或者是近似完全二叉树。 二叉堆满足二个特性: 1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。 2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。 当父结点的键值总是大于或等于任何一个子节点的键值时为最大堆。当父结点的键值总是小于或等于任何一个子节点的键值时为最小堆 堆排序:  由二叉堆的定义可知,堆顶元素(即...
分类:其他好文   时间:2014-07-23 22:34:19    阅读次数:193
百万数据排序:优化的选择排序(堆排序)
本博文介绍首先介绍直接选择排序,然后针对直接选择排序的缺点改进的“堆排序”,堆排序非常适合:数组规模非常大(数百万或更多) + 严格要求辅助空间的场景。
分类:其他好文   时间:2014-07-22 22:46:55    阅读次数:1802
算法导论专题一--排序算法(2)
上节分析了O(n^2)的算法,这节就分析O(nlgn)的算法-归并,快速和堆排序。一:综述 O(nlgn) 的算法可以分为两大类,两者所用的技术差别较大。归并和快速排序采用的是分治策略,这两者相当于一个对称的过程,一个是自顶向上合并子问题,另一个则自上向下分解子问题。而堆排序利用堆这一数据结构元素间...
分类:其他好文   时间:2014-07-22 22:36:14    阅读次数:282
STL 源码剖析 算法 stl_heap.h
heap ------------------------------------------------------------------------- binary heap 是一种完全二叉树。 隐式表示法:以 array 表述 tree。 小技巧:将 array 的 #0 元素保留,则第 i 个元素的左右子节点分别是 2i 和 2i + 1, 父节点是i/2 --> STL 里没有采用这种小技巧 将 array 无法动态改变大小,所以用 vector 替代 array 这个文件里提供了各种堆操作的...
分类:其他好文   时间:2014-07-22 00:32:34    阅读次数:256
[leetcode]Sort List
Sort ListSort a linked list inO(nlogn) time using constant space complexity.算法思想:时间复杂度为O(nlogn)的排序算法,有快排、归并、堆排序,快排需要往前遍历,因此不适合单链表,堆排序可以,但是需要O(n)的空间,因此...
分类:其他好文   时间:2014-07-22 00:03:35    阅读次数:187
堆排序算法---《程序员必须知道的10大基础实用算法及其讲解》
原帖地址:http://www.oschina.net/question/1397765_159365 快速排序算法的基本特性: 时间复杂度:O(N * logN) 堆排序为不稳定排序,不适合记录较少的排序。 var arr = [], count = 100, i = 0, parentIndex...
分类:其他好文   时间:2014-07-21 10:21:26    阅读次数:207
POJ3264Balanced Lineup(最基础的线段树)
采用一维数组建树。(因为一维数组建的是完全二叉树,时间上比用孩子节点指针建树慢,不过基本可以忽略=-=) #include #include #include using namespace std; const int INF = 0xffffff0; int minV=INF; int maxV=-INF; struct Node { int L,R; int minV,ma...
分类:其他好文   时间:2014-07-20 22:28:44    阅读次数:216
线段树——转
一:线段树基本概念1:概述线段树,类似区间树,是一个完全二叉树,它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动态查询问题,由于二叉结构的特性,它基本能保持每个操作的复杂度为O(lgN)!性质:父亲的区间是[a,b],(c=(a+b)/2)左儿子的区间是[a,c],右儿子...
分类:其他好文   时间:2014-07-19 13:26:16    阅读次数:256
堆排序
先看下堆的概念:堆是一种数据结构,逻辑上是一种完全的二叉树,在存储上是数组对象。 堆分为小顶堆和大顶堆,顾名思义:小顶堆是指顶部的元素是最小的,大顶堆是指顶部的元素师最大的。 这样只要我们能够得到这样的堆,每次将顶部的元素和数列的最后一个元素进行交换,然后再对剩下的元素进行建堆,接着以此类推这样的做法,便可以得到排好的数列了。 根据上面所述,堆排序的关键是:建堆。建堆也分为调堆和建堆过程;...
分类:其他好文   时间:2014-07-19 02:47:16    阅读次数:213
堆和堆排序
堆有两种: max-heap 和 min-heap. Max-heap 一般用来排序,Min-heap 用来实现 priority queue.max-heap的定义是:for each i: A[parent(i)] >= A[i]min-heap: for each i: A[parent(i)...
分类:其他好文   时间:2014-07-18 10:23:12    阅读次数:180
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!