第9章资料排序(Sorting).doc

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

第9章:資料排序(Sorting) 1. 「資料」(Data)是指收集但是沒有經過整理和分析的原始數值、文字或符號,它是資訊的原始型態。電腦將資料儲存成檔案,檔案是一種有組織的資料,各種不同層次的資料組織稱為「資料階層」(Data Hierarchy)。 資料階層一共分成六個階層:位元、位元組、欄位、記錄、檔案和資料庫,如下圖所示: 上述圖例可以看出最小儲存單位是位元,8個位元組成位元組,也就是ASCII碼的字元,數個位元組結合成一個欄位,多個欄位組成記錄,最後將一組記錄儲存成檔案,資料庫是一組相關檔案的集合。 2. 排序處理的資料主要是針對資料階層檔案中的記錄,依記錄的某些欄位,稱為「鍵值」(Key),以特定規則排列成遞增或遞減順序。例如:學生連絡與成績記錄的資料,如下圖所示: 上述學生記錄可以依指定欄位的比較來重新排列記錄順序,例如:使用【成績】欄位重新排列找出成績最高的學生,如下圖所示: 上述記錄依成績欄位值從大到小排列,可以得到最高成績90分,這種比較和重新排列記錄的工作稱為排序,成績欄位值是鍵值。換句話說,排序工作就是執行鍵值的比較和交換,以便將重新排列鍵值的順序。 排序的種類 排序方法依儲存媒體可以分為兩種:內部排序法(Internal Sorting)和外部排序法(External Sorting)。內部排序法是將鍵值儲存在電腦記憶體來執行排序,外部排序法因為鍵值的資料量太大無法全部儲存在記憶體,其排序的過程是使用外部儲存裝置,例如:硬碟或磁帶機儲存排序的鍵值。 一般來說,在計算機科學使用的排序演算法,其分類的標準有三種,如下所示: 執行效率(Computational Complexity):使用Big Oh評估的執行效率,以資料量n來說,其範圍從O(n Log n)到O(n2)。 記憶體的使用(Memory Usage):排序演算法所需使用的電腦資源,主要是指額外記憶體空間的使用。 穩定性(Stability):如果排序演算法是一種穩定性演算法,這是指在排序後,重複鍵值的順序並不會改變,仍然保持原來順序。以C語言的結構陣列來說,如果students[5]是陳會安,students[6]是江小魚,其鍵值的成績都是77,在排序後,並不會交換陣列元素,陣列索引值5仍是學生陳會安,6是江小魚。 3. 泡沫排序法。 1: [5][34][12][33][10][9][45] 2: [5][12][33][10][9][34][45] 3: [5][12][10][9][33][34][45] 4: [5][10][9][12][33][34][45] 5: [5][9][10][12][33][34][45] 6: [5][9][10][12][33][34][45] 選擇排序法。 1: [5][45][34][12][33][10][9] 2: [5][9][34][12][33][10][45] 3: [5][9][10][12][33][34][45] 4: [5][9][10][12][33][34][45] 5: [5][9][10][12][33][34][45] 6: [5][9][10][12][33][34][45] 插入排序法。 1: [5][45][34][12][33][10][9] 2: [5][34][45][12][33][10][9] 3: [5][12][34][45][33][10][9] 4: [5][12][33][34][45][10][9] 5: [5][10][12][33][34][45][9] 6: [5][9][10][12][33][34][45] 謝耳排序法。 1:h序列4: [33][5][9][12][45][10][34] 2:h序列2: [9][5][33][10][34][12][45] 3:h序列1: [5][9][10][12][33][34][45] 4. 程式碼改為使用整數或浮點數陣列。 5. 只需修改if條件就可以由大到小排序 6. 請修改第9-2-4節的程式碼,新增方法來產生h佇列。 7. 合併排序法和快速排序法,其執行效率為O(n Log n),比基本排序法的O(n2)優,演算法是將排序資料分割成多個小集合分別執行排序,解決排序問題,所以可以使用遞迴方式解決子問題來完成整個資料排序。 8. 合併排序法。 start-mid-end: 0 - 0 - 1: [15][45] 2 - 2 - 3: [22][34] 0 - 1 - 3: [15][22][34][45] 4 - 4 - 5: [53][90] 6 - 6 - 7: [29][67] 4 - 5 - 7: [29][53][67][90] 0 - 3 - 7: [15][22

文档评论(0)

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

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

1亿VIP精品文档

相关文档