資料結構 老師:李崇明 助教:楊斯竣.

Slides:



Advertisements
Similar presentations
Introduction to C Programming
Advertisements

樞紐分析與資料庫 蕭世斌 Nov 20, 2010.
C语言程序设计 李伟光.
教學經驗分享 吳毅成 國立交通大學資訊工程系 2012年4月.
第5章 排序与查找 PART A 《可视化计算》.
陳維魁 博士 儒林圖書公司 第九章 資料抽象化 陳維魁 博士 儒林圖書公司.
TQC+ JAVA全國教師研習會 PLWeb 程式設計練習平台 簡介.
第八章 排序 8-1 排序簡介 8-2 內部排序法 8-3 外部排序法.
主題五 CPU Learning Lab.
課程名稱:資料結構 授課老師:_____________
第7章 陣列 7-1 認識陣列 7-2 陣列的應用.
JDK 安裝教學 (for Win7) Soochow University
邏輯設計 老師:羅峻旗 助教:楊斯竣.
排序 Sorting.
第十章 排序與搜尋.
第八章 利用SELECT查詢資料.
Analysis of Sorting Algorithms
使用VHDL設計—4位元加法器 通訊一甲 B 楊穎穆.
使用VHDL設計—4位元位移器 通訊一甲 B 楊穎穆.
Chapter 2 – Chapter 4 Chang Chi-Chung
基數排序 (Radix Sort).
第1章 單晶片微電腦概論.
排序的相關知識 排序(Sorting)是指將一群資料,按特定規則調換位置,使資料具有某種次序關係(遞增或遞減)。
鄧姚文 資料結構 第九章:排序與搜尋 鄧姚文
Chapter 8 排序 資料結構導論 - C語言實作.
Sorting 排序 Bubble Sort O(n2) Insert Sort Selection Sort Quick Sort
Chap3 Linked List 鏈結串列.
如何赢一个机械键盘
網頁程式設計 本章投影片錄自HTML5、CSS3、RWD、jQuery Mobile跨裝網頁設計 陳惠貞 著 碁峰資訊股份有限公司出版
北一女中 資訊選手培訓營.
8-1 最大數及最小數找法 8-2 排序 8-3 二元搜尋法 8-4 動態規劃技巧 8-5 計算難題
第8章 資料排序 資料結構設計與C++程式應用
Introduction to C Programming
第 十 章 排序(Sorting) 課程名稱:資料結構 授課老師:________ 2019/4/20.
挑戰C++程式語言 ──第8章 進一步談字元與字串
蕭志明 老師 Algorithm(演算法) Ext:6779
蕭志明 老師 Algorithm(演算法) /FB:
Teacher: 郭育倫 Mail: 演算法 Teacher: 郭育倫 Mail:
類別、物件與方法 的設計運用.
C qsort.
13.1 氣泡排序 13.2 選擇排序 13.3 插入排序 13.4 合併排序 13.5 快速排序
程式設計-- Binary Search 通訊一甲 B 楊穎穆.
資料結構使用Java 第6章 鏈結串列(Linked List).
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
邏輯設計 老師:羅峻旗 助教:楊斯竣.
陣列與結構.
北一女中 資訊選手培訓營 遞迴、河內塔與merge sort Nan.
Commando War ★★☆☆☆ 題組:Problem Set Archive with Online Judge
選擇性結構 if-else… switch-case 重複性結構 while… do-while… for…
實習八 函式指標.
使用VHDL設計-8x3編碼電路 通訊一甲 B 楊穎穆.
班級:博碩子一甲 授課老師:鐘國家 助教:陳國政
資料表示方法 資料儲存單位.
MultiThread Introduction
程式設計--Quick Sort 通訊一甲 B 楊穎穆.
本教學投影片係屬教科書著作之延伸,亦受著作權法之保護。
資料結構與C++程式設計進階 期末考 講師:林業峻 CSIE, NTU 7/ 15, 2010.
方格紙上畫正方形.
資料結構 老師:李崇明 助教:楊斯竣.
Advanced Competitive Programming
10107: What is the Median? ★★☆☆☆
JAVA 程式設計與資料結構 第十九章 Sorting.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
分而治之法 /8/20 演算法 _ 第五章.
Array(陣列) Anny
Class 3:陣列.
Chapter 4 Multi-Threads (多執行緒).
C語言程式設計 老師:謝孟諺 助教:楊斯竣.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
InputStreamReader Console Scanner
Presentation transcript:

資料結構 老師:李崇明 助教:楊斯竣

課程內容 排序的基本特性 排序種類 排序方法 程式撰寫 依排序後的順序來看 依儲存媒體來看 插入排序法(Insertion Sort) 氣泡排序法(Bubble Sort) 選擇排序法(Selection Sort) 程式撰寫

排序的基本特性 依照某種條件將資料項目按順序排列 鍵值 廠商估計,電腦的運算約有25%的執行時間是耗費在排序上。 按照數字的大小由小至大排列 按照筆畫順序排列姓名 鍵值 比如號碼數字、身高,或筆畫數等某種特定的值。 透過鍵值大小的比較來排序。 廠商估計,電腦的運算約有25%的執行時間是耗費在排序上。

排序種類-依排序後的順序來看 穩定性(Stable)排序 不穩定性(Unstable)排序 排序過後能使相同數值的資料,保持原順序中之相對位置。 不穩定性(Unstable)排序

排序種類-依儲存媒體來看 內部排序(internal sort) 外部排序(external sort) 資料可以全部同時載入主記憶體(main memory)中完成排序。 外部排序(external sort) 資料太多以致無法同時於主記憶體中來完成排序,而需借用輔助記憶體,且必須不斷的做資料抽換的動作。相當的耗時。

插入排序法(Insertion Sort) 從第2個資料開始,每次考慮一資料,並依序插入其前面適當的位置。 每到新位置 i,即能找到該數值的適當位置,並保證前 i 個數值皆排序完成。 Input 45 39 12 25 30 第1回合 第2回合 第3回合 第4回合

插入排序法(Insertion Sort) 穩定性排序 練習寫出以下數列,使用插入排序法的過程。 Input:21, 76, 85, 7, 32, 64, 101

氣泡排序法(Bubble Sort) 又稱為交換排序(interchange sort)。 如果是由小排到大,每次都只將相鄰的兩個資料做比較,假使前一個比後一個大時,則互相對調。 每一回合結束,最大值都會被放在對的位置上。 時間複雜度: O(n2) 穩定性排序 Input 18 2 20 34 12 第1回合 第2回合 第3回合 第4回合

練習 練習寫出以下數列,使用氣泡排序法的過程。 Input:95, 27, 90, 49, 80, 58, 6, 9, 18, 50

95 27 90 49 80 58 6 9 18 50 第1回合 第2回合 第3回合 第4回合 第5回合 第6回合

選擇排序法(Selection Sort) 每回合到新位置 i 並與後方最小的值交換,保證前 i 個數值皆排序完成。 時間複雜度: O(n2) 穩定性排序 Input 18 2 20 34 12 第1回合 第2回合 第3回合 第4回合

練習 練習寫出以下數列,使用選擇排序法的過程。 Input:95, 27, 90, 49, 80, 58, 6, 9, 18, 50

95 27 90 49 80 58 6 9 18 50 第1回合 第2回合 第3回合 第4回合 第5回合 第6回合 第7回合

程式碼 Java的陣列提供內建的排序方法 撰寫一程式碼,讓使用者輸入個數及數值資料,將其數列排序並印出。 必須import java.util.*的類別庫 由小到大的內建排序方法:Arrays.sort(陣列名); 撰寫一程式碼,讓使用者輸入個數及數值資料,將其數列排序並印出。

合併排序(Merge Sort) 典型的「分而治之」排序法 把陣列分解成後, 再兩兩合併進行排序。

快速排序法(Quick Sort) 「分而治之」 (divide and conquer)排序法 從數值中挑一個「基準」(pivot) 比基準小的元素放在基準前方,形成左串列 大的放在後方形成右串列 遞迴將左右串列進行Quick Sort。

快速排序法(Quick Sort)

練習 練習寫出以下數列,使用快速排序法的過程。 Input:95, 27, 90, 49, 80, 58, 6, 9, 18, 50

95 27 90 49 80 58 6 9 18 50 第1回合 第2回合 第3回合 第4回合