- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
9.1排序的基本概念;一、排序的定义;设含n个记录的序列为{R1,R2,…,Rn}
其相应的关键字序列为{K1,K2,…,Kn};设待排序记录序列中有关键字相等的记录,即ki=kj(ij),且在排序前Ri领先于Rj.;例如:;若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。;1、顺序存储:移动记录实现排序;;9.2插入类排序;有序序列r[1..i-1];实现“一趟插入排序”可分三步进行:;直接插入排序(基于顺序查找);利用“顺序查找”实现
“在r[1..i-1]中查找r[i]的插入位置”;1.从r[i-1]起向前进行顺序查找,;可以在查找的同时实现记录向后移动;;令i=2,3,…,n,可实现整个序列的排序。;实现内部排序的基本操作有两个:;对于直接插入排序:;因为r[1..i-1]是一个按关键字有序的序列,则可以利用折半查找实现在“r[1..i-1]中查找r[i]的插入位置”,如此实现的插入排序为折半插入排序。它只能减少查找的次数不能减少移动的次数,因此与查找后移同时实现的直接插入排序比较,改进不大。;;由于插入排序的效率取决于:记录的个数及记录的原始序;;将记录序列跳跃式的分成若干组,分别对每组进行插入排序,组数不断减少,最后仅剩一组。;例如:;Voidshellinsert(recordtyper[],intlength,intd)
{for(i=1+d;i=length;i++)
if(r[i].keyr[i-d].key)
{r[0]=r[i];/*是监视哨吗?*/
for(j=i-d;j0r[0].keyr[j].key;j-=d)
r[j+d]=r[j];
r[j+d]=r[0];}};希尔排序的时间复杂度分析是一个数学上尚未解决的难题。增量序列d[1..t]的设计至关重要,目前没有统一定论,以经验为主。
逆转数:对于待排序序列中的某个记录的关键字,它的逆转数是指在它之前比此关键字大的关键字的个数。
直接插入排序:一次移动只能减少一个逆序数。逆转数之和就是排序所需要移动的记录的次数。
希尔排序:一次移动后减少的逆转数不止一个。
希尔排序的时间复杂度为O(n1.5).;;9.3交换类排序法;假设在排序过程中,记录序列r[1..n]的状态为:;算法一:;算法二:;5;最好的情况(关键字在记录序列中顺序有序):
只需进行一趟冒泡;冒泡排序一趟之后,使最大的记录定位到最后,如果一趟之后可使某记录(任意)定位在它应处的位置(在有序序列中),而将其余的无序序列以它为枢轴,分成两部分,比它小的放在它的前面,比它大的的放在它的后面,下一趟分别对前后的子序列排序,显然可加快速度。;目标:找一个记录,以它的关键字作为“枢轴”,凡关键字小于枢轴的记录均移动至该记录之前,反之,凡关键字大于枢轴的记录均移动至该记录之后。;;可见,经过“一次划分”,将关键字序列
52,49,80,36,14,58,61,97,23,75
变为:23,49,14,36,(52)58,61,97,80,75;一趟快速排序算法;首先对无序的序列进行“一次划分”,之后分别对分割所得两个子序列“递归”进行快速排序。;voidQKsort(recordtyper[],intlow,inthigh);
/*对记录序列r[low..high]进行快速排序*/
{if(lowhigh)
{pos=QKpass(r,low,high);
/*对r[low..high]进行一趟划分,pos为枢轴*/
QKsort(r,low,pos-1);/*对低子序列递归排序*/
QKsort(r,pos+1,high);/*对高子序列递归排序*/
}};假设一次划分所得枢轴位置i=k,则对n个记录进行快速排序所需时间:;;若待排记录的初始状态为按关键字有序时,快速排序将蜕化为冒泡排序,其时间复杂度为O(n2)。;9.4选择类排序法;一、简单选择排序;简单选择排序算法;时间性能分析;二、树形选择排序;01020304
您可能关注的文档
最近下载
- 卫生部卫妇社发〔2012〕35号《托儿所幼儿园卫生保健工作规范(2012年修 .pdf VIP
- 教科版五年级上册科学教学计划.pdf VIP
- 2025中国中医科学院中医药健康产业研究所 (江西中医药健康产业研究院) 招聘事业编制人员18人考试备考试题及答案解析.docx VIP
- 职业生涯规划课件(课件-43张).ppt VIP
- 江南嘉捷扶梯说明书MPS-200B.pdf
- 桥梁桩基设计与计算.ppt
- 10-fluent湍流模型汇总.ppt VIP
- GHS危险化学品安全标签中文英文模板及警告图标.doc
- 2025中国中医科学院中医药健康产业研究所 (江西中医药健康产业研究院) 招聘事业编制人员18人备考练习题库及答案解析.docx VIP
- 2025年通用技术集团校招正式启动笔试参考题库附带答案详解.doc
文档评论(0)