巨資三B-資料結構與演算法
06170244 吳宜璇
這個學期過的迅速且充實,演算法為我原本枯燥乏味的生活帶來一線生機,讓我時刻思考著當週的作業脈絡,撇除一些不愉快的溝通,我認爲這是一堂受益良多的課程,很開心能遇見這位老師,不能說我的筆記做得多完整多完美,至少我覺得很有成就感,「哇!」感嘆我一學期的成果,原來我也可以做到。-Yuni
-
Week1
2019.09.13 Moon Festival
-
Week2
-
Week3
-
Week4
-
Week5
2019.10.10 Double Tenth Day
-
Week6
-
Week7
-
Week8
-
Week9
-
Week10
-
Week11
-
Week12
-
Week13
-
Week14
- Searching a maze using DFS and BFS in Python 3
- Minimum Spanning Tree
-
Week15
-
Week16
- Overview
-
Week17
- Final Test
-
Week18
Waiting 2020.01.11
-
-
Linked List屬於鏈式儲存結構,可以快速插入、刪除和移動,因此不會浪費太多記憶體的空間;Array是順序儲存結構,優點:無需為表中元素之間的邏輯關係而增加額外的儲存空間;可以快速的存取表中任一位置的元素缺點:插入和刪除操作需要移動大量元素;當線性表長度變化較大時,難以確定儲存空間的容量。
- Linked List 每一個節點都是個體,Array牽一髮動全身。
-
- 時間複雜度:衡量演算法執行好壞的工具,不是以秒來計算,而是以步驟次數來計算。
- 👉Link
- 時間複雜度:衡量演算法執行好壞的工具,不是以秒來計算,而是以步驟次數來計算。
-
-
- Stack : Last-in-First-out
- pop(-1)
- Queue : First-in-First-out
- pop(0)
- 可以應用在BFS&DFS上,下面會介紹這兩個演算法
- Stack是具有「Last-In-First-Out」的資料結構(可以想像成一種裝資料的容器),「最晚進入Stack」的資料會「最先被取出」,「最早進入Stack」的資料則「最晚被取出」。
- 找到Stack中的最小值。
- Push(data):把資料放進Stack。 Pop:把「最上面」的資料從Stack中移除。 Top:回傳「最上面」的資料,不影響資料結構本身。 IsEmpty:確認Stack裡是否有資料,不影響資料結構本身。 getSize:回傳Stack裡的資料個數,不影響資料結構本身。
- Stack : Last-in-First-out
-
-
-
- 找出重複值和缺失值
- 設一個Count的數組,Count的下標對應nums的值,Count的元素代表nums中元素出現的次數。
-
-
-
- 快速排序法
- 先用Partition以基準點分出左邊和右邊
- 再以呼叫quicksort的方式,以二分法方式將兩邊排列,最後就會由小到大排列array裡的元素
-
-
-
- 合併排序法
- 先將array裡的元素拆開(devide)成為各一個
- 再以mergesort的function呼叫,將每個元素合併
- 設一個空的array[],將左邊和右邊互相比大小,由小到大排列
-
-
-
- 堆積排序法
- 先用heapify將最大值往最頂點放
- 再呼叫heapsort函式,將最頂點的值和array中的最後一個值交換,然後把這個交換到最後一個位置的值取出放在新的array裡
- 持續呼叫heapify再繼續上一步
-
-
-
-
在BST中的操作,不論是Insert(新增資料)或是Delete(刪除資料),皆需要先做Search(搜尋),而Search(搜尋)的效率,取決於BST的height(樹高)
-
RBT的node比BST多加了「顏色」(紅色或黑色)
-
RBT可以被視為如同Complete Binary Tree的BST,所有與Search(搜尋)有關的操作(Leftmost、Successor、Insert、Delete等等),都能夠在O(logN)內完成
-
藉由控制顏色,能夠保證在RBT中,最長path(路徑)不會超過最短path的兩倍(若最短的path是5,最長的path至多只能是10),如此,RBT便能夠近似地視為平衡
-
RBT的五項特徵:
-
-
-
-
- Hash 是一種加密函數,將字元轉換成散列值
-
-
-
- 廣度優先搜尋
- 各個node相對於root有其對應的level,按照level由小到大依序對node進行Visiting
-
-
-
- 深度優先搜尋
- 先遇到的node就先Visiting
-
-
-
- 以單一vertex為起點,抵達Graph中的其餘所有vertex之最短路徑
- 起點vertex即為root
- 從root到其餘vertex的path必定是唯一的最短路徑。
-
2019 Data Structure and Algorithm by Yuni