




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、C語言程序設計清華大學 鄭莉 安穎蓮Page 1第七講第七講 查找與排序算法查找與排序算法參考書:參考書:計算機程序設計基礎計算機程序設計基礎第十章第十章 數(shù)據(jù)結構(數(shù)據(jù)結構(C C語言版)語言版)第九章第九章C語言程序設計清華大學 鄭莉 安穎蓮Page 2本講主要內容本講主要內容 排序算法排序算法- 直接插入排序直接插入排序- 簡單選擇排序簡單選擇排序- 起泡法排序起泡法排序 查找算法查找算法- 順序查找順序查找- 折半查找折半查找C語言程序設計清華大學 鄭莉 安穎蓮Page 3排序排序 排序排序是計算機程序設計中的一種重要操作,是計算機程序設計中的一種重要操作,它的功能是將一個它的功能是將
2、一個數(shù)據(jù)元素數(shù)據(jù)元素的任意序列,重新排的任意序列,重新排列成一個按列成一個按關鍵字關鍵字有序的序列。有序的序列。- 數(shù)據(jù)元素:數(shù)據(jù)的基本單位。在計算機中通常作為數(shù)據(jù)元素:數(shù)據(jù)的基本單位。在計算機中通常作為一個整體進行考慮。一個數(shù)據(jù)元素可由若干數(shù)據(jù)項一個整體進行考慮。一個數(shù)據(jù)元素可由若干數(shù)據(jù)項組成。組成。- 關鍵字:數(shù)據(jù)元素中某個數(shù)據(jù)項的值,用它可以標關鍵字:數(shù)據(jù)元素中某個數(shù)據(jù)項的值,用它可以標識(識別)一個數(shù)據(jù)元素。識(識別)一個數(shù)據(jù)元素。C語言程序設計清華大學 鄭莉 安穎蓮Page 4內部排序與外部排序內部排序與外部排序 內部排序:內部排序:待排序的數(shù)據(jù)元素存放在計算機內待排序的數(shù)據(jù)元素存放
3、在計算機內存中進行的排序過程。存中進行的排序過程。 外部排序:外部排序:待排序的數(shù)據(jù)元素數(shù)量很大,以致待排序的數(shù)據(jù)元素數(shù)量很大,以致內存存中一次不能容納全部數(shù)據(jù),在排序過程內存存中一次不能容納全部數(shù)據(jù),在排序過程中尚需對外存進行訪問的排序過程。中尚需對外存進行訪問的排序過程。C語言程序設計清華大學 鄭莉 安穎蓮Page 5內部排序方法內部排序方法 插入排序插入排序- 將一個待排序序列的元素,逐個按其關鍵字的大小將一個待排序序列的元素,逐個按其關鍵字的大小插入到前面已排好的有序序列的適當位置上,直到插入到前面已排好的有序序列的適當位置上,直到待排序元素全部插入完為止。待排序元素全部插入完為止。
4、選擇排序選擇排序- 每次從待排序序列中選擇一個關鍵字最小的元素,每次從待排序序列中選擇一個關鍵字最小的元素,(當需要按關鍵字升序排列時),順序排在已排序(當需要按關鍵字升序排列時),順序排在已排序序列的最后,直至全部排完。序列的最后,直至全部排完。 交換排序交換排序- 兩兩比較待排序序列中的元素,并交換不滿足順序兩兩比較待排序序列中的元素,并交換不滿足順序要求的各對記錄,直到全部滿足順序要求為止。要求的各對記錄,直到全部滿足順序要求為止。C語言程序設計清華大學 鄭莉 安穎蓮Page 6直接插入排序直接插入排序在插入類排序方法中,因尋找插入位置的方法不同,又分為不同的插入排序方法,其中最簡單的是
5、:直接插入排序。下面舉例說明:初始狀態(tài):初始狀態(tài): 5 4 10 20 12 35 4 10 20 12 3插入操作:插入操作:1 1 4 4 4 5 10 20 12 34 5 10 20 12 32 2 1010 4 5 10 20 12 34 5 10 20 12 33 3 2020 4 5 10 20 12 34 5 10 20 12 34 4 1212 4 5 10 12 20 34 5 10 12 20 35 5 33 3 4 5 10 12 203 4 5 10 12 20C語言程序設計清華大學 鄭莉 安穎蓮Page 7簡單選擇排序簡單選擇排序在選擇類排序方法中,從待排序序列中選
6、擇元素的方法不同,又分為不同的選擇排序方法,其中最簡單的是:簡單選擇排序。下面舉例說明:5 4 10 20 12 5 4 10 20 12 3 3 初始狀態(tài):初始狀態(tài):3 3 4 4 10 20 12 5 10 20 12 53 4 10 20 12 3 4 10 20 12 5 5 第 i i 次選擇后,將選出的那個記錄與第 i i 個記錄做交換交換。3 4 5 20 12 3 4 5 20 12 1010 . .C語言程序設計清華大學 鄭莉 安穎蓮Page 8起泡排序起泡排序最簡單的交換排序方法起泡排序對具有n個元素的序列按升序進行起泡排序的步驟:首先將第一個元素與第二個元素進行比較,若為
7、逆序,則將兩元素交換。然后比較第二、第三個元素,依次類推,直到第n-1和第n個元素進行了比較和交換。此過程稱為第一趟起泡排序。經(jīng)過第一趟,最大的元素便被交換到第n個位置。對前n-1個元素進行第二趟起泡排序,將其中最大元素交換到第n-1個位置。如此繼續(xù),直到某一趟排序未發(fā)生任何交換時,排序完畢。對n個元素的序列,起泡排序最多需要進行n-1趟。C語言程序設計清華大學 鄭莉 安穎蓮Page 9起泡排序舉例起泡排序舉例對整數(shù)序列對整數(shù)序列 8 5 2 4 3 8 5 2 4 3 按升序排序按升序排序8524352438243582345823458初始狀態(tài)第一趟結果第二趟結果第三趟結果第四趟結果小的逐
8、漸上升每趟沉下一個最大的C語言程序設計清華大學 鄭莉 安穎蓮Page 10查找查找 查找查找- 所謂查找,就是在一個數(shù)據(jù)元素的集合中,按照某種方式所謂查找,就是在一個數(shù)據(jù)元素的集合中,按照某種方式找出所需要的特定數(shù)據(jù)元素的過程。找出所需要的特定數(shù)據(jù)元素的過程。 兩種最簡單的查找方法:兩種最簡單的查找方法:- 順序查找順序查找從數(shù)據(jù)序列第一個元素開始,將給定值逐個與各元素的關從數(shù)據(jù)序列第一個元素開始,將給定值逐個與各元素的關鍵值比較,直到找到相等者。若找不到相等者,便是查找鍵值比較,直到找到相等者。若找不到相等者,便是查找不成功。不成功。- 折半查找(二分法查找)折半查找(二分法查找)對于已按關
9、鍵字排序的序列,經(jīng)過一次比較,可將序列分對于已按關鍵字排序的序列,經(jīng)過一次比較,可將序列分割成兩部分,然后只在有可能包含待查元素的一部分中繼割成兩部分,然后只在有可能包含待查元素的一部分中繼續(xù)查找,并根據(jù)試探結果繼續(xù)分割,逐步縮小查找范圍,續(xù)查找,并根據(jù)試探結果繼續(xù)分割,逐步縮小查找范圍,直至找到或找不到為止。直至找到或找不到為止。C語言程序設計清華大學 鄭莉 安穎蓮Page 11折半查找舉例折半查找舉例用折半查找法,在下列序列中查找值為用折半查找法,在下列序列中查找值為2121的元素:的元素:L=1513192137566475808892H=11M =INT(L+H)/2)=6513192137L=1H=M-1=5M=INT(L+H)/2)=3M2137HL=M+1=4LM=INT(L+H)/2)=4MC語言程序設計清華大學 鄭莉 安穎蓮Page 12查找與排序算法綜合應用舉例查找與排序算法綜合應用舉例 題目:使用前面介紹的三種排序、兩種查找算題目:使用前面介紹的三種排序、兩種查找算法,對若干人的姓名(字符串)進行排序和查法,對若干人的姓名(字符串)進行排序和查找。找。 編程要點:編程要點:- 查找、排序算法如前所述查找、排序算法如前所述- 對若干字符串進行排序,為避免大量的數(shù)據(jù)交換,對若干字符串進行排序,為避免大量的數(shù)據(jù)交換,應使用指
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 河北省承德市高新區(qū)第一中學2024-2025學年高一下學期期中考試數(shù)學試卷(含解析)
- 小學自律、誠信活動方案
- 尖兵訓練活動方案
- 工廠六一活動方案
- 小學禮物拍賣活動方案
- 師德宣傳活動方案
- 市場商戶活動方案
- 山西汾酒兌獎活動方案
- 小手洗干凈活動方案
- 少先隊獎章征集活動方案
- 國際疾病分類手術碼(ICD-9-CM-3)使用手冊
- 商標侵權培訓課件
- 采購矸石合同協(xié)議
- 留學邏輯考試題及答案
- 第8課 北宋的政治 -課件(共28張)2024-2025學年部編版歷史七年級下冊
- 安置房購房定金合同協(xié)議
- ODM合同范本模板
- 【初中科學】土壤與植物生長教學設計 2024-2025學年浙教版七年級下冊科學
- 山東省濰坊市2024-2025學年高二上學期期末考試歷史試題(原卷版+解析版)
- 《醫(yī)療機構重大事故隱患判定清單(試行)》知識培訓
- 人工智能輔助科研數(shù)據(jù)挖掘與分析
評論
0/150
提交評論