iT邦幫忙

鐵人檔案

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

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

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

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

[資料結構] 二元樹 (Binary Tree)

接續昨天的樹。二元樹 (Binary Tree) 的特點就是每個節點最多有兩個兒子,或者是說每個節點最多有兩棵子樹。 二元樹中還有兩種特殊的種類: 滿二元樹...

2018-10-26 ‧ 由 ramonliao 分享
DAY 12

[資料結構] 二元樹走訪 (Binary Tree Traversal)

在介紹完了二元樹,今天就來談談二元樹讀取和儲存的方式。二元樹裏的資料其實不一定是依照大小或從左到右排序的,可能依照輸出的方式不同,結果也會不盡相同。 目前理論上...

2018-10-27 ‧ 由 ramonliao 分享
DAY 13

[資料結構] 二元搜尋樹 (Binary Search Tree)

講了二元樹的走訪,接下來要進入搜尋了,尋找森林深處的密寶~ 先來說說 二元搜尋樹 (Binary Search Tree),又稱 有序二元樹 或 排序二元樹。如...

2018-10-28 ‧ 由 ramonliao 分享
DAY 14

[資料結構] 堆積 (Heap)

堆積 (Heap),是一種特殊的完全二元樹,而堆疊不一樣,是完全不同的概念。 有分兩種,一種是最小堆積,另一種是最大堆積。 最小堆積 如下圖,完全二元樹所有的父...

2018-10-29 ‧ 由 ramonliao 分享
DAY 15

[演算法] 循序搜尋 (Sequential Search)

講了幾天的資料結構,先來講幾個有關搜尋的演算法,之後再繼續接回資料結構的其他部分。 循序搜尋 (Sequential Search),說白了就是在已排序的資料中...

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

[演算法] 二分搜尋 (Binary Search)

還記得之前討論過的樹嗎?都會分成左子樹和右子樹,而二分搜尋也是遵循這樣的邏輯來運算的。 二分搜尋 (Binary Search) 是取 已排序資料的中間索引的值...

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

[演算法] 插補搜尋 (Interpolation Search)

插補搜尋 (Interpolation Search),其實用的就是數學裡內插法的概念來運算。在已排序的資料中,將資料視為線性的解,藉由在線上的移動來尋找我們需...

2018-11-01 ‧ 由 ramonliao 分享
DAY 18

[演算法] 深度優先搜尋 (Depth-first Search)

還記得之前有討論過的列舉法嗎?今天我們來做個延伸。 之前的列舉法是將用 for 迴圈的方式,一層一層的舉出所有的可能,然後將所有舉出的可能和我們所設定的條件相比...

2018-11-02 ‧ 由 ramonliao 分享
DAY 19

[演算法] 費氏搜尋 (Fibonacci Search)

在討論費氏搜尋之前,要先了解一下費氏數列。 費氏數列 (Fibonacci numbers),又稱費波那契數列,是指在一串數字中,每一項是前兩項的和。數學上的定...

2018-11-03 ‧ 由 ramonliao 分享
DAY 20

[演算法] 廣度優先搜尋 (Breadth-first Search)

廣度優先搜尋 (Breadth-first Search),也稱之為寬度優先搜尋。和深度優先搜尋不同的是,深度優先是透過函數的遞迴來延伸運算,而廣度優先則是透過...

2018-11-04 ‧ 由 ramonliao 分享