下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、改进的堆排序算法及其复杂度分析张玉林1推排序算法简介排序(Sorting)是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列重新排列成一个按关键字有序的序列。假设含n个记录的序列为R1,R2,Rn(1)其相应的关键字序列为K1,K2,Kn,需确定1,2,n的一种排序P1,P2,Pn,使其相应关键字满足如下的非递减(或非递增)的关系KP1KP2KPn (2)即使公式(1)的序列成为一个按关键字有序的序列RP1,RP2,RPn (3)这样的一种操作称为排序。其中关键字Ki可以是记录Ri(i=1,2,n)的主关键字,也可以是记录Ri的次关键字,甚至是若干数据项的组合。排序
2、算法有:插入排序,合并排序,冒泡排序,选择排序,希尔排序,堆排序,快速排序,计数排序,基数排序等,各个算法的时间和空间复杂度也不同。而对n个关键字K1,K2,Kn进行堆排序的算法是威洛姆斯(WilliomsJ)在1964年提出的。堆排序只需要一个记录大小的辅助空间,每个待排序的记录仅占一个存储空间。原始的推排序算法只有n*log(n)的时间复杂度,其思想是利用堆这种数据结构,堆可以看成一个完全二叉树,所以在排序中比较的次数可以做到很少。加上其是原地排序,不需要申请额外的空间,效率也不错。定义1:n个元素的序列K1,K2,Kn当且仅当满足下列关系时,称之为堆:KiK2i,KiK2i+1或KiK2
3、i,KiK2i+1,其中i=1,2,对深度为h的堆,筛选算法中进行的关键字比较次数至多为2(h-1)次,则在建立含n个元素、深度为h的堆时,总共进行的关键字比较次数不超过4n。而n个结点的完全二叉树的深度为log2n+1,则调整建新堆时调用Heapadjust过程n-1次,总共进行的比较次数为 由此,在最坏的情况下,堆排序的时间复杂度为 理论上已经证明任何一种比较排序算法在最坏的情况下所需做的键比较次数至少是故堆排序算法的任何改进已不可能降低数量级,而只能设法降低复杂度因子。因此,对算法的改进应从降低 t ( n)开始。2推排序改进思想及程序从堆的特性可以看出, 在 K1 , K2 , , K
4、n 是基本有序时, 尾结点在从堆底逆序上升至堆顶后往往又被筛回到底层附近,而每下筛一层需进行2 次键比较,这使得重新建堆的算法往往运行在最坏情况下。为了减少重新建堆过程中的键比较次数,设计先从根开始, 每次只通过一次键比较使最大的子结点上升一层,在进行至第 d 次之后,通过将尾结点键值和当前结点的父结点键值作比较,决定尾结点是上升还是下筛。如果仍需下筛,则再通过d次键比较使当前结点下降 d 层,然后再判定尾结点是要上升还是下筛。这样一直做下去,可知最坏情况是降至底层后再上升 d 层,所以每次重新建堆至多作( h + h/ d + d)次键比较。设K1,K2,Kn存于数组k 1 至k n 中,则
5、改进后的算法可描述为:建立初始堆buildheap ()for ( i = n/2 ; i =1 ; i - ) shift ( i , n) ; / 3buildheap3/shift (int i , int n) / 3将 k i k n 整理成堆3/ x = k i ; j = 23 i ;while ( j = n)if ( j n & k j = k j ) break ;k i = k j ; i = j ; j = 23 i ;k i = x ; / 3shift3重新建堆rebuild (int x ;int n ;intdeep) i = 1 ; j =23 i ; d =
6、0 ; while ( j = n) d = d + 1 ;if ( j n & k j = k j ) break ; k i = k j ; i = j ; j = 23 i ;while ( i 1 & x k n/2 ) k i = k n/ 2 ;i = n/ 2 ;k i = x ; / 3rebuild3/在堆深 h log2 n时(此时堆中的元素一般说来已基本有序) ,重新建堆实际上变成先通过h 次比较降至堆底,然后再适当上升将尾结点放在正确的位置。heapsort ()buildheap ;for ( j = n ; j = 2 ; j - ) x = k j ; k j = k 1 ;rebuild( x , j -1 , log 2 n ) 3算法的复杂度分析堆排序算法因其比较和所需额外空间少而被广泛地采用。 最坏的情况下有当d = 4时,有t ( n) = (5/4) nlog 2 n + O( n),为了确定 d 的最佳取值, 通过对f ( d) = h + h/ d + d 求极限,可知当 d = h时f ( d)有极小值( h + 2 h) 。 又通过对求极限可知当时, t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年医用冷链物流运输服务合同
- 2026年医院非医学教育合同
- 2025年文旅创意产业园建设项目可行性研究报告
- 2025年综合物流配送中心项目可行性研究报告
- 2025年高端农业科技园区建设项目可行性研究报告
- 中贸易合同范本
- 纹眉客户合同协议
- 交房补充协议书
- 2025年互联网诊疗服务项目可行性研究报告
- 通信技术专家面试题解析
- 执法用手机管理办法
- 双重管理安全员管理办法
- 2019-2025年中国鲜切水果行业市场调查研究及投资前景预测报告
- 染色体核型分析报告解读要点
- 2025年中国泵行业市场白皮书
- (高清版)DB1303∕T 357-2023 鲜食核桃果实主要病虫害防治技术规程
- 无人机集群技术-智能组网与协同 课件全套 第1-8章 绪论- 无人机集群任务分配
- 天然牙-种植体联合支持下颌覆盖义齿的三维有限元分析
- 智圆行方的世界-中国传统文化概论知到课后答案智慧树章节测试答案2025年春暨南大学
- 《大中型无刷励磁发电机组主励磁机保护技术导则》
- 师德师风自查自纠工作自查报告
评论
0/150
提交评论