• 沒有找到結果。

學習重點

在文檔中 排 序 1 (頁 33-36)

1-1 排序演算法

(以下規則皆以「遞增排序」為例。)

1. 插入排序法:

① 將最前端的數當作「已排序」。

② 將未排序的第 1 個數,由已排序數值的末端逐一向前比較,並插入適當位置。

③ 重覆②,直到完成所有數的排序。

2. 選擇排序法:

① 在未排序的數值中找到最小值,和未排序的第 1 個數交換,完成一個數的排序。

② 重複①,直到完成所有數的排序。

3. 氣泡排序法:

① 在未排序的數值中,將最後一個數設為「比較位置」,並和前方相鄰的數比較,較小 的數排前面。

② 將步驟①中較小的數,設為新的「比較位置」,再與前方的數比較、交換,當最小的 數移動到最前面,完成一輪掃描。

③ 重複①、②,依次完成所有數的排序。

1-2 程式實作—氣泡排序法 任務要求

1. 使用檔案 1-2-1.sb3 撰寫程式。

2. 完成 的程式,按下 ,程式要將 紙牌清單 中的數字由小至大排序。

問題思考

Q 1. 兩數的比較與交換:(遞增排序)

(1) 交換時機為何?

(2) 如何將清單內的兩個數互換?

Q 2. 完成氣泡排序的演算法:

(1) 共要掃描幾輪?如何設定與控制?

(2) 每一輪掃描時,分別要比較幾次?如何設定與控制?

(3) 如何設定每次要比較的位置?

36

資訊科技篇

p004-039_ch1.indd 36

p004-039_ch1.indd 36 2020/10/2 下午 04:27:022020/10/2 下午 04:27:02

解題分析

Q 1. 兩數的比較與交換:(遞增排序)

(1) 交換時機:當後數<前數時,兩數交換。

(2) 為了避免資料在交換時被覆蓋,我們要設定 一個變數暫存用來存放資料。

① 將資料 2 的資料複製到暫存中。

② 複製資料 1 的資料到資料 2 中。

③ 複製暫存的資料到資料 1 中。

Q 2. 完成氣泡排序的演算法:

(假設有n 個數要進行排序)

(1) 掃描輪數:

① 共掃描 n - 1 輪。

② 利用變數 來記錄輪數。

(2) 各輪的比較次數:

次數= n -輪數:

第1 輪:n - 1 次 第2 輪:n - 2 次 第3 輪:n - 3 次

第n - 1 輪:1 次 (3) 比較的位置:

① 每輪都從清單末端開始。

② 利用變數 來記錄比較位置。

③ 每次比較完,往前移動一位,繼續進 行比較。

初始 狀態

資料1 資料2 暫存

A B

A B B

A A B

B A B

【程式規畫】

掃描

【清單長度-1】

用變數 記錄現在是第幾輪:

1 開始,逐輪加 1

(執行完一整輪的比較之後)

進行下一輪掃描: 的值加1

比較

【清單長度-第幾輪】

用變數 記錄要比較的位置:

每輪 都從「清單長度」開始

(執行完一次比較之後)

進行下一次比較: 的值減 1 (比較的位置往前移動一位)

函式:比較與交換

若後數<前數,兩數交換

1

  序

第1章 排序

37

p004-039_ch1.indd 37

p004-039_ch1.indd 37 2020/10/2 下午 04:27:032020/10/2 下午 04:27:03

or

S ting

科技廣角

演算法是解決問題的辦法,也就是完成某項任務的 步驟,因每個人的思考方式不同,針對同一個問題,可

能會設計出不同的演算法。在本章中,我們介紹三種排序演算法,它們分別適用 於不同的情境中,在資訊科學的領域中,還有許多有趣或著名的演算法。

猴子排序是資訊科學領域中非常特別 的排序演算法,但特別的原因在於「它一 點都不實用」,其原理就像是一隻猴子將 一堆卡片隨意拋起,落下後檢查卡片是否 已排序好,若沒排好就再拋一次,完全是 聽天由命的演算法。

雖然猴子排序一點都不實用、幾乎派不上用場,但它的存在也說明了每種想 法都有可能實現,這也正是創造演算法的必要條件之一。

1 什麼都可能-猴子排序

2 創新成經典-合併排序

西元 1945 年,合併排序法由「電腦之父」馮紐曼提出,

採用「分而治之法」,將一個複雜的問題分成更多相似且更 小的子問題,並暫時存到額外的空間裡,直到子問題解決 後,再將處理好的子問題合併回原空間,就能解出答案。

合併排序的出現,大幅減少了氣泡排序一一比對所耗費 的執行時間,合併排序也成為最常被使用、或加以改進的通 用排序法之一。

創造自己的

排序演算法

馮紐曼(John von Neumann,西元1903 年~1957年)

38

資訊科技篇

p004-039_ch1.indd 38

p004-039_ch1.indd 38 2020/10/2 下午 04:27:052020/10/2 下午 04:27:05

在文檔中 排 序 1 (頁 33-36)

相關文件