最坏情况(Worst Case).PPT

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
最坏情况(Worst Case)

7-2 內部排序法 ()()分別用插入排序法後得到: 最後再以((8/2)/2)/2的間距做插入排序,也就是每一個元素進行排序得到最後的結果: 謝耳法分析 1.任何情況的時間複雜度均為O(n3/2)。 2.謝耳排序法和插入排序法一樣,都是穩定排序。 3.只需一個額外空間,所以空間複雜度是最佳。 4.此排序法適用於資料大部份都已排序完成的情況。 7-2 內部排序法 範例 7.2.6 請設計一Java程式,自行輸入8個數值,並使用謝耳排序法來加以排序。 7-2 內部排序法 合併排序法 通常是外部儲存裝置最常用的排序方法,工作原理乃是針對已排序好的二個或二個以上的檔案,經由合併的方式,將其組合成一個大的且已排序好的檔案。步驟如下: 1.將N個長度為1的鍵值成對地合併成N/2個長度為2的鍵值組。 2.將N/2個長度為2的鍵值組成對地合併成N/4個長度為4的鍵值組。 3.將鍵值組不斷地合併,直到合併成一組長度為N的鍵值組為止。 7-2 內部排序法 合併排序法的基本演算流程 以條列的方式將步驟整理如下: 1.將N個長度為1的檔案合併成N/2個已排序妥當且長度為2的檔案。 2.將N/2個長度為2的檔案合併成N/4個已排序妥當且長度為4的檔案。 3.將N/4個長度為4的檔案合併成N/8個已排序妥當且長度為8的檔案。 4.將N/2i-1個長度為2i-1的檔案合併成N/2i個已排序妥當且長度為2i的檔案。 7-2 內部排序法 快速排序法 又稱分割交換排序法,是目前公認最佳的排序法,也是使用切割征服(Divide and Conquer)的方式,會先在資料中找到一個隨機會自行設定一個虛擬中間值,並依此中間值將所有打算排序的資料分為兩部份。 假設有n筆R1、R2、R3…Rn記錄,其鍵值為k1、k2、k3…kn: ①先假設K的值為第一個鍵值。 ②由左向右找出鍵值Ki,使得KiK。 ③由右向左找出鍵值Kj使得KjK。 ④如果ij,那麼Ki與Kj互換,並回到步驟②。 ⑤若i≧j則將K與Kj交換,並以j為基準點分割成左右部份。然後再針對左右兩邊進行步驟①至⑤,直到左半邊鍵值=右半邊鍵值為止。 7-2 內部排序法 快速排序法將下列資料的排序過程 因為ij故交換Ki與Kj,然後繼續比較: 因為ij故交換Ki與Kj,然後繼續比較: 7-2 內部排序法 因為i?j故交換K與Kj,並以j為基準點分割成左右兩半: 由上述這幾個步驟,各位可以將小於鍵值K放在左半部;大於鍵值K放在右半部,依上述的排序過程,針對左右兩部份分別排序。過程如下: 7-2 內部排序法 快速法分析 1.在最快及平均情況下,時間複雜度為O(nlog2n)。最壞情況就是每次挑中的中間值不是最大就是最小,其時間複雜度為O(n2)。 2.快速排序法不是穩定排序法。 3.在最差的情況下,空間複雜度為O(n),而最佳情況為O(log2n)。 4.快速排序法是平均執行時間最快的排序法。 7-2 內部排序法 範例 7.2.7 請設計一Java程式,可輸入陣列的個數,並使用亂數產生數值,試利用快速排序法加以排序。 7-2 內部排序法 堆積排序法 堆積排序法使用到了二元樹的技巧,它是利用堆積樹來完成排序。堆積是一種特殊的二元樹,可分為最大堆積樹及最小堆積樹兩種。而最大堆積樹滿足以下3個條件: 最小堆積樹則具備以下3個條件: 1.它是一個完整二元樹。 2.所有節點的值都大於或等於它左右子節點的值。 3.樹根是堆積樹中最大的。 1.它是一個完整二元樹。 2.所有節點的值都小於或等於它左右子節點的值。 3.樹根是堆積樹中最小的。 7-2 內部排序法 範例 將利用堆積排序法針對34、19、40、14、57、17、4、43的排序過程示範如下 ?依下圖數字順序建立完整二元樹 7-2 內部排序法 ?建立堆積樹 ?將57自樹根移除,重新建立堆積樹 ?將43自樹根移除,重新建立堆積樹 7-2 內部排序法 ?將40自樹根移除,重新建立堆積樹 ?將34自樹根移除,重新建立堆積樹 ?將19自樹根移除,重新建立堆積樹 7-2 內部排序法 ?將17自樹根移除,重新建立堆積樹 ?將14自樹根移除,重新建立堆積樹 最後將4自樹根移除。得到的排序結果為 57、43、40、34、19、17、14、4 堆積法分析 1.在所有情況下,時間複雜度均為O(nlogn)。 2.堆積排序法不是穩定排序法。 3.只需要一額外的空間,空間複雜度為O(1)。 7-2 內部排序法 範例 7.2.8 請設計一Java程式,並使用堆積排序法來將一數列排序。 7-2 內部排序法 基數排序法 基數排序法依比較的方向可分為最有效鍵優先(Most Signi

文档评论(0)

youbika + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档