演算法课程AlgorithmsCourse3排序Sort.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

*根據以上討論,Algorithm主要由2個副程式組成:Merge2副程式將兩個Run的記錄(即:兩筆已排序的記錄),合併成一筆已排序的記錄U(即:合併成一個Run)MergeSort2副程式(可當作主程式)執行整個記錄串的遞迴切割以堆疊中的遞迴切割次序,透過Merge2將所有的Run加以合併Run1的長度為m,Run2的長度為n,則合併兩個Run的最多比較次數為m+n-1次Ex:[5,26][1,77]比較3次後,會得到[1,5,26,77]*Merge2副程式Run1的長度為m,Run2的長度為n,則合併兩個Run的最多比較次數為m+n-1次*MergeSort2副程式*[]:Run,已排序好的檔案記錄Run的長度:Run中記錄個數26,5,77,1,61,11,59,15,48,19[26][5][77][1][61][11][59][15][48][19][5,26][1,77][11,61][15,59][19,48][1,5,26,77][11,15,59,61][19,48][1,5,11,15,26,59,61,77][19,48][1,5,11,15,19,26,48,59,61,77]IterativeMergeSort(非遞迴合併排序)Pass1:Pass2:Pass3:Pass4:*根據以上討論,Algorithm主要由3個副程式組成:Merge1副程式將兩個Run的記錄(即:兩筆已排序的記錄),合併成一筆已排序的記錄U(即:合併成一個Run)同Recursion的作法,Run1的長度為m,Run2的長度為n,則合併兩個Run的最多比較次數為m+n-1次MergePass副程式在每一回合(Pass)中,會處理多次的“合併兩個Run”之工作MergeSort副程式(可當作主程式)整個非遞迴的合併排序副程式需執行回合(Pass)(補充4)*為何需要執行回合?以執行完一回合後,Run的長度來看:有n個數字待排序,一開始每一個Run的長度為1,且有n個Run執行完Pass1後,最長的Run長度為21=2執行完Pass2後,最長的Run長度為22=4執行完Pass3後,最長的Run長度為23=8…執行完Passi後,最長的Run長度為2i=n(停止)?i=log2n由於n不見得為2的倍數,因此取上限整數(Ceiling)以求得能真正完整處理n筆資料排序的回合數。嚴格說應該為2i=n*分析TimeComplexityBestCaseWorstCaseAverageCaseSpaceComplexityStable/Unstable*Time-ComplexityAvg./Worst/BestCase:O(nlogn)以RecursiveMergeSort角度:[說明]:時間函數:T(n)=T(n/2)+T(n/2)+c?n時間複雜度求法:遞迴樹步驟:將原本問題照遞迴定義展開計算每一層的Cost加總每一層的Cost即為所求數學解法最後合併左右兩半部所花時間∵左、右半部排好之後,各只剩一個Run,且兩半部各有n/2的資料量,其最後一次合併時的比較次數“最多”為n/2+n/2-1次,即約n-1次(slide72)?時間的表示可為c?n次(∵為線性時間))左半部遞迴右半部遞迴*遞迴樹Step1:展開Step2:計算每一層的Costnnnn共有log2n層,表示有log2n個n。Step3:totalcost=nlog2n?T(n)=O(nlog2n)*數學解法時間函數:T(n)=c?n+T(n/2)+T(n/2)?T(n)=2T(n/2)+cn,c為0的常數2(2T(n/4)+c(n/2))+cn=4T(n/

您可能关注的文档

文档评论(0)

166****0783 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档