# 用 Java 學習資料結構與演算法 ## 為什麼藥學資料結構與演算法? 都轉職成軟體工程師兩年左右了,在轉職班也沒有好好的學習電腦科學的基礎知識,這次就來好好地把資料結構與演算法讀起來吧! 已經寫過了一些專案,雖然對資料結構多少都有一些理解,也會在專案中依照需求選擇適合的資料結構,但沒有一個系統性的學習,寫起來還是心理需需的。 而演算法的部分則是真的沒有一點基礎,但演算法才是真的重點,依照不同的情境選擇不同的演算法,才能寫出高效率與高品質的程式。 ## 資料結構列表 - [陣列 Array](https://hackmd.io/@ohQEG7SsQoeXVwVP2-v06A/HyQjYhN4C) - [多維陣列 Multi-dimensional Array](https://hackmd.io/@ohQEG7SsQoeXVwVP2-v06A/HyQjYhN4C) - [ 單向鏈結串列 Singly Linked List](https://hackmd.io/@ohQEG7SsQoeXVwVP2-v06A/B1KZYmd7yg) - [TODO-雙向鏈結串列 Doubly Linked List](https://hackmd.io/@ohQEG7SsQoeXVwVP2-v06A/HkbpuiB4ye) - [TODO-環狀鏈結串列 Circular Linked List](https://hackmd.io/@ohQEG7SsQoeXVwVP2-v06A/ByqfxMPV1x) - [堆疊 Stack](https://hackmd.io/@ohQEG7SsQoeXVwVP2-v06A/SkFMZ2bSye) - [堆 Heap](https://hackmd.io/@ohQEG7SsQoeXVwVP2-v06A/HkrfhB4BJe) - [佇列 Queue](https://hackmd.io/@ohQEG7SsQoeXVwVP2-v06A/Syz8OOCSkl) - [TODO樹 Tree](https://hackmd.io/@ohQEG7SsQoeXVwVP2-v06A/rJM-dC0rkl) - [TODO-圖 Graph](TODO) - [TODO-圖形表示法 Graph Representation](TODO) - [TODO-雜湊 Hashing](TODO) - [TODO-集合與映射 Set and Map](TODO) ## 演算法列表 - Web 仔好像不常用到演算法,所以我就先列著,有空再來學吧! ### 排列演算法 - [Option 氣泡排序法 Bubble Sort](TODO) - [Option 選擇排序法 Selection Sort](TODO) - [Suggest 插入排序法 Insertion Sort](TODO) - [Option 謝爾排序法 Shell Sort](TODO) - [Must 合併排序法 Merge Sort](TODO) - [Must 快速排序法 Quick Sort](TODO) - [Suggest 堆疊排序法 Heap Sort](TODO) ### 搜尋演算法 - [Option 循序搜尋 Sequential Search](TODO) - [Must 二元搜尋 Binary Search](TODO) - [Suggest 內插搜尋 Interpolation Search](TODO) - [Option 費式搜尋 Fibonacci Search](TODO) ### 圖形演算法 - [Must 深度與廣度優先搜尋 Depth and Breadth First Search](TODO) - [Must 戴克斯特拉演算法 Dijkstra's Algorithm](TODO) - [Suggest 貝爾曼-福特演算法 Bellman-Ford Algorithm](TODO) - [Suggest 弗洛伊德-沃爾沃斯演算法 Floyd-Warshall Algorithm](TODO) - [Suggest 最小生成樹 Minimum Spanning Tree](TODO) - [Suggest 普林演算法 Prim's Algorithm](TODO) ### 其他演算法 - [Must 動態規劃 Dynamic Programming](TODO) - [Must 貪心演算法 Greedy Algorithm](TODO) - [Suggest 回溯演算法 Backtracking](TODO) - [Must 哈希表 Hash Table](TODO) - [Suggest 平衡樹 Balanced Tree](TODO)