• 沒有找到結果。

全華資訊科技第5章重要演算法實作

N/A
N/A
Protected

Academic year: 2021

Share "全華資訊科技第5章重要演算法實作"

Copied!
39
0
0

加載中.... (立即查看全文)

全文

(1)

第05章 重要演算法實作

(2)

第5章 重要演算法實作

 在第2章我們學習了排序及搜尋演算法,以 及挑選演算法時要考量的時間複雜度。  在本章,我們終於要透過程式實作,體驗 結合陣列資料結構及演算法,來解決排序 及搜尋的問題。同時,我們提供流程圖作 為參考及對照之用。

(3)

5-1

排序

氣泡排序法  氣泡排序法是透過數個回合的兩兩數字比較與 交換,將每一回合中最大的數字逐步交換到正 確的位置,回顧第2章的氣泡排序法,我們以三 個重點總結:

(4)

5-1

排序

(5)

回顧:氣泡排序法圖例-第0回合

考慮陣列的索引值常從0開始, 這裡從第0回合算起

(6)
(7)
(8)

實例演練-氣泡排序法

 以氣泡排序演算法,將內含5個數字的陣列

data,從小到大排列整齊。我們先看流程

(9)
(10)
(11)

11

氣泡排序法程式設計實作-1

(12)

12

氣泡排序法程式設計實作-2

(13)
(14)
(15)
(16)

IT

加油站

 實作氣泡排序法還有一個常見的手法是利 用「雙迴圈」來實作。外層迴圈用來處理 「回合數」,內層迴層則用來處理「相鄰 兩數交換」。函數版的作法利用了模組化, 雙迴圈版的作法則看起來簡潔俐落。

(17)
(18)

5-2

搜尋

循序搜尋  循序搜尋是最簡單的搜尋演算法,概念就是從 陣列裡的第一個元素開始逐一檢查,如此一來 便可以知道搜尋的目標值是否存在於陣列中。 因此,實作上僅需要利用一個迴圈,將陣列中 的各個元素數值取出來,檢查是否符合目標值 即可。

(19)

實例演練-循序搜尋法

以循序搜尋演算法,找出目標值target是否

在陣列data中,並回傳目標值target所在的 索引值。我們先看流程圖:

(20)
(21)
(22)
(23)
(24)

5-2

搜尋

二分搜尋  二分搜尋是比循序搜尋更有效率的演算法。如 果搜尋的陣列已經排序過,我們每次都可以去 掉一半的數字,在剩下的另一半數字中搜尋目 標值。

(25)

實例演練-二分搜尋法

以二分搜尋演算法,找出目標值target是否

在陣列data中,並回傳目標值target所在的 索引值。我們用流程圖表達如後:

(26)
(27)
(28)
(29)
(30)
(31)
(32)
(33)

演算法效能分析

 在實際應用場合,演算法要處理的資料量 通常非常大(例如:考生查詢學力測驗成 績、警察輸入違規車輛車牌號碼搜尋車主 姓名等)  由第2章的時間複雜度分析中,我們得知, 從一個含有N個已排序的數列中搜尋,最壞 的情況下,循序搜尋法會搜尋N次,而二分 搜尋法只需要log2N次

(34)
(35)

演算法效能分析

 實驗數據:  循序搜尋平均要花費0.17秒才能找到目標數值  二分搜尋花費的時間為0.0000077秒,遠小於 循序搜尋所需的時間  實驗證明:  以演算法的效率來看,循序搜尋是一個效率較 差的搜尋演算法。

(36)
(37)
(38)
(39)

參考文獻

相關文件

• 我們通常用 nD/mD 來表示一個狀態 O(N^n) ,轉移 O(N^m) 的 dp 演算法. • 在做每題

• 也就是 ”我的dp是n^3”這句話本身不夠表示你的dp演算法,必須 要說“我的dp是個狀態n^2,轉移n”才夠精確. •

• 在線 (online):程式/演算法 必須對前一個詢問或操作做出

古代希臘人對幾何學的貢獻,眾所周知。有位數學家把它

(香港會計準則第2條 ‐ 存貨) 邊際成本計算法

「節日起源」的 篇章;音樂科 聆聽及演奏/演唱 以節日為題材的 樂曲,並創作 節奏頻現句

2.注重實地演練,角色扮演、跟隨經驗、實地參訪及邀請業界主管演講方 式,使學生能從「經驗中學習」

W ing )教授在美國電腦權 威期刊《 C ommunications of the