- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
资料结构-使用C语言5131气泡排序
Chapter 13 排序 13.1 氣泡排序 13.2 選擇排序 13.3 插入排序 13.4 合併排序 13.5 快速排序 Chapter 13 排序 排序的方式可以分成兩種: 內部排序(internal sort) 如果記錄是在主記憶體(main memory)中進行分類,則稱之。 外部排序(external sort) 假若記錄太多,以致無法全部存於主記憶體,需借助輔助記憶體,如磁碟或磁帶來進行分類,則稱之。 Chapter 13 排序 除了上述內部排序和外部排序之區別外,也可以分成下列兩類: 比較排序(comparative sort) 如果排序方式是比較整個鍵值(key value)的話,則稱之。 分配排序(distributive sort) 假使是一次只比較鍵值的某一位數,此類稱之。 Chapter 13 排序 存於檔案(file)中的記錄(record),可能含有相同的鍵值。對於兩個鍵值 k(i) = k(j)的記錄 r(i) 和 r(j),如果在原始檔案中,r(i) 排在 r(j) 之前;而在排序後,檔案中的 r(i) 仍在 r(j) 之前,則稱此排序具有穩定性(stable)。反之,如果 r(j) 在 r(i) 之前,則稱此排序為不穩定(unstable)。亦即表示當兩個鍵值一樣時並不需要互換,此稱為穩定排序,反之,即使鍵值相同仍需互換者,則稱為不穩定排序。 13.1 氣泡排序 氣泡排序(bubble sort)又稱為交換排序(interchange sort)。 相鄰兩個相比,假使前一個比後一個大時,則互相對調。 通常有n個資料時需要做n-1次掃瞄,一次掃瞄完後,資料量減少1,當沒有對調時,就表示已排序好了。 13.1 氣泡排序 例如有5個資料,分別是18, 2, 20, 34, 12以氣泡排序的步驟如下: 13.1 氣泡排序 假設鍵值是12, 18, 2, 20, 34,則需要幾次掃瞄呢? 13.1 氣泡排序 由於在第三次掃瞄,沒有做互換的動作,因此可知資料已排序好,不用再比較了。我們可利用一變數加以判斷是否要繼續下一次的掃描與比較。 氣泡排序是stable,最壞時間與平均時間為O(n2),所需要額外空間也很少。 13.2 選擇排序 選擇排序(selection sort)首先在所有的資料中挑選一個最小的放置在第一個位置(因為由小到大排序),再從第二個開始挑選一個最小的放置於第二個位置.....,一直下去。 13.2 選擇排序 例如有5個記錄,其鍵值為18, 2, 20, 34, 12。利用選擇排序,其做法如下: 選擇排序跟氣泡排序一樣是stable,最壞時間與平均時間都是O(n2),所需要額外空間亦很少。 13.3 插入排序 插入排序(insertion sort)乃將加入的資料置於適當的位置,如下圖所示: 13.3 插入排序 在j的每個步驟將加入的資料,找出其適當的位置如j=4時,加入25,則需將39和45往後移,再將25放在12的後面。餘此類推。 插入排序是stable的性質,最壞時間和平均時間均為O(n2),所需額外空間很少。 13.4 合併排序 合併排序(merge sort)乃是將兩個或兩個以上已排序好的檔案,合併成一個大的已排序好的檔案。 13.4 合併排序 假使在一堆無排序的資料,我們可以先將它們一對一合併,再來二對二合併,三對三合併,如下圖所示,假設有下列8個鍵值18, 2, 20,34, 12, 32, 6, 16。 13.4 合併排序 從上圖大致可以發現最後合併的動作,乃是和上述將兩個已排序好的資料加以合併而成。 合併分類是stable,最壞時間與平均時間均為O(nlog2n) 。所需的額外空間與檔案大小成正比。 13.5 快速排序 快速排序(quick sort)又稱為劃分交換排序(partition exchange sorting)。就平均時間而言,快速排序是所有排序中最佳的。假設有n個R1, R2, R3, ..., Rn,其鍵值為K1, K2, K3, ..., Kn。 13.5 快速排序 快速排序法其步驟如下: 以第一個記錄的鍵值k1做基準K。 由左至右 i = 2,3,...,n,一直找到ki K。 由右至左 j = n, n-1, n-2, ..., 2,一直找到kj K 。 當ij 時Ri與Rj互換,否則R1與Rj互換。 13.5 快速排序 例如有十個記錄,其鍵值分別為39, 11, 48, 5, 77, 18, 70, 25, 55, 33,利用快速排序過程如下: 13.5 快速排序 此時在39的左半部之鍵值皆比39小,而右半部皆比39大。 再利用上述方法將左半部與右
您可能关注的文档
最近下载
- 2025年江苏省公务员省考《行测》联考-部分真题(A类).pdf VIP
- 校园消防安全台账范本.docx
- 2024版加油站安全生产管理台账样本.doc VIP
- 精品解析:江苏省南京市玄武外国语学校、科利华中学2022-2023学年八年级下学期期中语文试题(解析版).docx VIP
- PC工法桩专项施工方案 .doc
- foreign language classroom anxiety.pdf VIP
- JT_T 410-2022CN交通运输行政执法标识.pdf
- 标准图集-22TJ310装配式钢筋桁架楼承板系列产品-下册.pdf VIP
- 汽车基础知识在线试题答案2.pdf VIP
- 地质勘查坑探规范.pdf VIP
文档评论(0)