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