第05章 重要演算法實作
第5章 重要演算法實作
在第2章我們學習了排序及搜尋演算法,以 及挑選演算法時要考量的時間複雜度。 在本章,我們終於要透過程式實作,體驗 結合陣列資料結構及演算法,來解決排序 及搜尋的問題。同時,我們提供流程圖作 為參考及對照之用。5-1
排序
氣泡排序法 氣泡排序法是透過數個回合的兩兩數字比較與 交換,將每一回合中最大的數字逐步交換到正 確的位置,回顧第2章的氣泡排序法,我們以三 個重點總結:5-1
排序
回顧:氣泡排序法圖例-第0回合
考慮陣列的索引值常從0開始, 這裡從第0回合算起
實例演練-氣泡排序法
以氣泡排序演算法,將內含5個數字的陣列
data,從小到大排列整齊。我們先看流程
11
氣泡排序法程式設計實作-1
12
氣泡排序法程式設計實作-2
IT
加油站
實作氣泡排序法還有一個常見的手法是利 用「雙迴圈」來實作。外層迴圈用來處理 「回合數」,內層迴層則用來處理「相鄰 兩數交換」。函數版的作法利用了模組化, 雙迴圈版的作法則看起來簡潔俐落。5-2
搜尋
循序搜尋 循序搜尋是最簡單的搜尋演算法,概念就是從 陣列裡的第一個元素開始逐一檢查,如此一來 便可以知道搜尋的目標值是否存在於陣列中。 因此,實作上僅需要利用一個迴圈,將陣列中 的各個元素數值取出來,檢查是否符合目標值 即可。實例演練-循序搜尋法
以循序搜尋演算法,找出目標值target是否
在陣列data中,並回傳目標值target所在的 索引值。我們先看流程圖:
5-2
搜尋
二分搜尋 二分搜尋是比循序搜尋更有效率的演算法。如 果搜尋的陣列已經排序過,我們每次都可以去 掉一半的數字,在剩下的另一半數字中搜尋目 標值。實例演練-二分搜尋法
以二分搜尋演算法,找出目標值target是否
在陣列data中,並回傳目標值target所在的 索引值。我們用流程圖表達如後: