码迷,mamicode.com
首页 >  
搜索关键字:堆排序    ( 1851个结果
STL heap部分源码分析
本文假设你已对堆排序的算法有基本的了解。 要分析stl中heap的源码的独到之处,最好的办法就是拿普通的代码进行比较。话不多说,先看一段普通的堆排序的代码:...
分类:其他好文   时间:2015-08-19 13:25:51    阅读次数:94
15. 蛤蟆的数据结构进阶十五排序实现之堆排序
15. 蛤蟆的数据结构进阶十五排序实现之堆排序          本篇名言:“谁要是游戏人生 , 他就一事无成 ; 谁不能主宰自己 , 永远是一个奴隶。-- 歌德”          继续来看下堆排序。 欢迎转载,转载请标明出处: 1.  堆排序 堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索...
分类:编程语言   时间:2015-08-17 23:42:25    阅读次数:210
堆排序
堆排序 堆排序是利用堆的性质进行的一种选择排序。下面先讨论一下堆。1.堆堆实际上是一棵完全二叉树,其任何一非叶节点满足性质: Key[i]=Key[2i+1]&&key>=key[2i+2] 即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。 堆分为大顶堆和小顶堆,满足Key[i]>=...
分类:编程语言   时间:2015-08-17 23:19:40    阅读次数:174
排序算法
排序:将一连串记录按照关键字的大小(从大到小或从小到大)进行排列。 稳定性:如果两个大小相同的关键字的相对位置在排序前和排序后是一样的(Ai等于Aj,排序前Ai 在Aj的前面,排序后Ai 还是在Aj的前面),那么这种算法就是稳定的。 稳定的排序算法有:冒泡排序、直接插入排序、归并排序、基数排序 不稳定的排序算法有:选择排序、快速排序、希尔排序、堆排序 冒泡排序:...
分类:编程语言   时间:2015-08-17 12:06:36    阅读次数:194
HeapSort 堆排序 基于伪代码实现
GIF 动态图伪代码/* From Wikipedia, the free encyclopedia*/1.父子节点特征iParent = floor((i-1) / 2);iLeftChild = 2*i + 1;iRightChild = 2*i + 2;2.算法伪代码/* 保持原汁原味就不翻....
分类:编程语言   时间:2015-08-17 06:27:23    阅读次数:176
排序法总结与比较
排序:对一序列对象根据某个关键字进行排序; 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面;             例如:插入排序、冒泡排序、归并排序、计数排序、基数排序、桶排序 不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面;                 例如:选择排序(5 8 5 2 9)、快速排序、堆排序 内排序:不占用额外内...
分类:编程语言   时间:2015-08-16 23:12:27    阅读次数:172
堆排序——深入浅出(图解)
如何建立这个堆呢。可以从空的堆开始,然后依次往堆中插入每一个元素,直到所有数都被插入(转移到堆中为止)。因为插入第i个元素的所用的时间是O(log i),所以插入所有元素的整体时间复杂度是O(NlogN),代码如下。n=0; for(i=1;i<=m;i++) { n++; h[ n]=a[ i]; //或者写成scanf("%d",&h[ n]); siftup(); }...
分类:编程语言   时间:2015-08-16 09:26:00    阅读次数:439
排序算法系列——堆排序
堆排序同直接选择排序一样是选择排序的一种。堆排序是借助一种数据结构——堆来完成排序,堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。 什么是堆: 关于二叉树这里就不叙述了。堆(二叉堆)可以视为一棵完全的二叉树,完全二叉树的一个“优秀”的性质是,除了最底层之外,每一层都是满的,这使得堆可以利用数组来表示(普通的一般的二叉树通常用链表作为基本容...
分类:编程语言   时间:2015-08-14 19:05:50    阅读次数:161
建堆,以及对堆排序
建堆,以及对堆排序 代码: #include int h[101];//用来存放堆的数组 int n;//用来存储堆中元素的个数,就是堆的大小 //交换函数,用来交换堆中的俩个元素的值 void swap(int x,int y) { int t; t=h[x]; h[x]=h[y]; h[y]=t; } //向下调整函数 void siftdown(int i) {/...
分类:编程语言   时间:2015-08-13 12:09:32    阅读次数:135
平均时间复杂度为O(nlogn)的排序算法
本文包括1.快速排序2.归并排序3.堆排序1.快速排序快速排序的基本思想是:采取分而治之的思想,把大的拆分为小的,每一趟排序,把比选定值小的数字放在它的左边,比它大的值放在右边;重复以上步骤,直到每个区间只有一个数。此时数组已经排序完成。快速排序最重要的是partition函数功能的实现,也就是将比...
分类:编程语言   时间:2015-08-12 18:19:22    阅读次数:134
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!