iT邦幫忙

鐵人檔案

2019 iT 邦幫忙鐵人賽
回列表
Software Development

30天學演算法和資料結構 系列

覺得學程式就是在學邏輯,所以決定要回歸最基本的演算法和資料結構,每天學一種。
大致分成幾個部分:排序、堆疊、搜尋,和幾個問題來討論。程式碼主要用Python來示範。

鐵人鍊成 | 共 31 篇文章 | 274 人訂閱 訂閱系列文 RSS系列文
DAY 1

達標好文 [演算法] 桶子排序法 (Bucket Sort)

拉蒙碎碎念 還記得以前剛學程式設計的時候,老師都會從幾個較簡單的演算法教起,讓學生比較好學也快上手。其實演算法就是在學邏輯,語法啊、技巧啊,我個人倒覺得是其次。...

2018-10-16 ‧ 由 ramonliao 分享
DAY 2

[演算法] 泡沫排序 (Bubble Sort)

拉蒙碎碎念 其實昨天的桶子演算法雖然直覺、簡單好懂,但也遺留了一些問題。舉例來說如果資料很大,就會很浪費空間,或者當資料有小數的時候,沒辦法產生相對應的桶子。因...

2018-10-17 ‧ 由 ramonliao 分享
DAY 3

達標好文 [演算法] 快速排序法 (Quick Sort)

有鑒於昨天學的泡沫排序法,效率篇低,就有某位聰明的科學家發明了快速排序法,其實也有用到一點二元分類的概念。 快速排序 (Quick Sort) 的想法是說,先找...

2018-10-18 ‧ 由 ramonliao 分享
DAY 4

[演算法] 基數排序法 (Radix Sort)

今天來講一個「非比較性」的演算法,基數排序法 (Radix Sort)。其實之前的排序法也是屬於 非比較性 的演算法。怎麼說?以泡沫和快速為例,這兩個演算法都是...

2018-10-19 ‧ 由 ramonliao 分享
DAY 5

[演算法] 列舉法 (Enumeration)

經過前幾天的演算法,都需要小動腦和邏輯上的思考對吧?透過一些比較和分配的技巧,來做資料的排序。 今天,就來講講列舉法 (俗稱暴力破解法)。 列舉法 (Enume...

2018-10-20 ‧ 由 ramonliao 分享
DAY 6

[資料結構] 陣列 (Array) & 串列 (Linked List)

好啦,討論完幾個演算法後,還是得面對最重要的核心,資料結構。(頓時有種醜媳婦見公婆的概念 該來的還是要來~) 其實資料在程式語言中有很多種型態,像是 int (...

2018-10-21 ‧ 由 ramonliao 分享
DAY 7

[資料結構] 佇列 (Queue)

經過昨天介紹的 串列 (Linked List),今天來講一個串列的延伸,佇列 (Queue)。佇列一樣有著串列的特性,每一筆元素本身同時包含著下一筆元素的位置...

2018-10-22 ‧ 由 ramonliao 分享
DAY 8

[資料結構] 堆疊 (Stack)

堆疊 (Stack) 的特性就是 先進後出 (First In Last Out, FILO)。舉個例子,比如說有一個長深桶子,我們依序放入大小剛好的 1 到...

2018-10-23 ‧ 由 ramonliao 分享
DAY 9

[資料結構] 堆疊 (Stack) - 2

河內塔 (Tower of Hanoi) 其實也是個古老的題目,最常被用來解釋什麼叫做堆疊。 河內塔最早發明這個問題的人是法國數學家愛德華·盧卡斯。 傳說越南...

2018-10-24 ‧ 由 ramonliao 分享
DAY 10

[資料結構] 樹 (Tree)

分得出來兩張圖片的差別嗎?第一張,我們稱為 樹 (Tree) ,第二張是所謂的迴路,屬於一般的無相圖。 樹有幾個特性: 不包含迴路。 一棵樹中的任意兩個節點...

2018-10-25 ‧ 由 ramonliao 分享