下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025重庆市长寿区城市管理服务中心招聘数字城管工作人员3人参考考试试题及答案解析
- 2026年西咸新区黄冈泾河学校春季教师招聘参考考试试题及答案解析
- 阆中市2025年公开考核招聘大学生志愿服务西部计划志愿者服务期满人员参考考试题库及答案解析
- 2026年上半年湖南株洲市市直单位公益性岗位招聘16人备考笔试题库及答案解析
- 2025海南省医学科学院实验动物科学部招聘3人备考笔试试题及答案解析
- 2026年宁波镇海中学嵊州分校招聘事业编制教师2人参考考试试题及答案解析
- 2025贵州贵阳市体育中学招聘2人备考考试题库及答案解析
- 2026清华附中大兴学校教师招聘参考考试试题及答案解析
- 2025浙江金华义乌市属国有企业解说员招聘6人参考笔试题库附答案解析
- 2026天津市河西区卫生健康系统招聘事业单位44人参考考试题库及答案解析
- 安徽恒光聚氨酯材料有限公司年产2000吨双吗啉基乙基醚技改项目环评报告
- 双梁桥式起重机设计毕业设计说明书
- 物业公司保洁工作检查评分表
- GB/T 20624.2-2006色漆和清漆快速变形(耐冲击性)试验第2部分:落锤试验(小面积冲头)
- 重大版英语六年级上册 Review 2 课件(共9张PPT)
- 工程委托单(通用模板)
- 饲料采购合同模板
- 2022年五子棋社团活动总结
- 储罐 (有限空间)作业安全告知牌及警示标志
- 解剖实习复习-感觉器及神经
- DB36T 1292-2020高速公路服务区污水处理(AO工艺)运维指南_(高清版)
评论
0/150
提交评论