- 1、本文档共43页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
内部排序
10-* 10.5 归并排序 归并 归并是指将若干个已排序好的有序表合并成一个有序表。两个有序表的归并称为二路归并。 归并排序 将待排序的n个记录,看作n个有序的子序列,每个子序列的长度为1。然后两两归并,得到n/2个长度为2或为1的子序列;再两两归并,...,如此重复,直到得到长度为n的子序列为止。这种排序的方法称为2_路归并排序。 10-* 10.5 归并排序 2_路归并排序的核心操作:将一维数组中前后两个有序序列归并为一个有序序列。 例: 将一维数组49,38,65,97,76,13,27,49进行2_路归并排序: 初始: [49],[38],[65],[97],[76],[13],[27],[49] 第一趟:[38,49],[65,97],[13,76],[27,49] 第二趟:[38,49,65,97],[13,27,49,76] 第三趟: [13,27,38,49,49,65,76,97] 10-* 10.5 归并排序 将两个有序序列归并为一个有序序列的算法 void merge (Sqlist SR,Sqlist TR,int i,int m, int n) //将有序表 SR.r[i..m]以及SR.r[m+1..n]有序归并到 TR.r[i..n]中 { la=i;lb=m+1;lc=i; //序列 la,lb,lc 的始点 while(la=m lb=n) { if LT(SR.r[la].key, SR.r[lb].key) TR.r[lc++]=SR.r[la++] //有序合并 else TR.r[lc++]=SR.r[lb++] } if ( la=m) TR.r[lc..n]=SR.r[la..m]; //剩余复制 if ( lb=n) TR.r[lc..n]=SR.r[lb..n]; } 10-* 10.5 归并排序 一趟归并排序操作 需调用n/(2h)次算法merge,将SR[1..n]前后相邻且长度为h的有序段两两归并,得到前后眼相邻、长度为2h的有序段,并放在TR[1..n]中。整个归并排序需要[log2n]趟。 递归算法:排序区间:R[s..t] 设:m=(int)((low+high)/2) 可递归地对两个子区间R[s..m]和R[m+1..t]进行归并排序。然后将两个已排序子区间合并为一个有序区间。 void MSort(SeqList SR,SeqList TR, ints,int t) //将有序表 SR.r[s..t]有序归并排序到 TR.r[s..t]中 { if (s==t) TR.r[s]=SR.r[s]; else { m=(s+t)/2; MSort( SR,MR,s,m); MSort( SR,MR,m+1,t); merge(MR,TR,s,m,t) } } 10-* 10.5 归并排序 算法分析 每趟归并的时间复杂度为O(n), 整个算法需㏒2n趟。时间复杂度为O(nlog2n)。 归并排序算法虽简单,但占用辅助空间大,实用性差。 10-* 10.6 基数排序 基数排序 是一种无需进行关键字比较的新排序方法,其基本操作是“分配”和“收集”。 基数排序原理 基数排序是按组成关键字的各位的值进行分配和收集,与前面介绍的排序方法不同,它无需进行关键字之间的比较。 设关键字有d 位,每位的取值范围为 r (称为基数),则需要进行d 趟分配与收集,需要设立 r 个队列。例如,若每位是十进制数字,则需要设立10个队列,若每位由小写字母组成,则要设立26个队列 。 10-* 10.6 基数排序 基数排序的步骤 从关键字的低位开始进行第i趟(i=1,2,...d)分配即将单链表中的记录依次按关键字的第i位分配到相应编号的队列中; 分配完毕后,将各队列的记录按队列编号顺序收集成一个单链表; 上一趟形成的链队,作为下一趟的输入,重复⑴⑵,直到第d趟收集完毕,所得单链表已成为有序表。 10-* 10.6 基数排序 例:初始 278—109—063—930—589—184—505—269—008—083 0 1 2
您可能关注的文档
- 关于进一步加快工业经济转型发展的若干意见试行.ppt
- 关于铁路测量报验程序及表格填写.ppt
- 关于青春理想的作文关于生命价值的作文关于人生观的作文篮球比赛作文.ppt
- 关于马克思主义基本原理概论修订的主要内容和讲授重点.ppt
- 关于餐饮渠道的开发.ppt
- 关于金融危机后农民工生活状况的调查报告答辩.ppt
- 关于高新技术企业认定管理工作有关问题的说明省高新技术企.ppt
- 关于高频交易的几点认识.ppt
- 关务物流知识简介.ppt
- 关企面对面大连海关驻保税区办事处政策宣讲会.ppt
- 员工离职申请表(模版)(标准版).doc
- 1.1追求智慧的学问课件-高中政治统编版必修四哲学与文化.pptx
- 1.3 课时2 氧化剂与还原剂 课件(共28张PPT) 高一化学人教版(2019)必修一.pptx
- 1.2 质点和位移(26张PPT)课件 高一物理鲁科版(2019)必修第一册.pptx
- 1.1 细胞生活的环境(共34张PPT).pptx
- 第二课 家庭与婚姻 第二课时 珍惜婚姻关系 课件-2025年高考思想政治总复习 选择性必修2 法律与生活.pptx
- 中高层管理人员能力考核评分表(标准版).docx
- 1.2 动量守恒定律及其应用(27张PPT)课件 高二物理鲁科版(2019)选择性必修第一册.pptx
- 1.3 科学验证:动量守恒定律 (16张PPT)课件 高二物理鲁科版(2019)选择性必修第一册.pptx
- 1 观潮 第一课时 课件(共19张PPT).pptx
文档评论(0)