原创 Kruskal(最小生成樹)

java實現Kruskal算法 源代碼 圖的結構java實現 Kruskal public class Kruskal { private static final int INF = Integer.MAX_VALUE;

原创 設計模式--狀態模式

Java工程源碼 類圖 定義 當一個對象內在狀態改變時允許其改變行爲,這個對象看起來像改變了其類 優點 - 結構清晰 - 遵循設計原則。很好的體現了開閉原則和單一職責原則 - 封裝性非常好 缺點

原创 數據結構-歸併排序

java實現歸併排序算法 源代碼 public class MergeSort extends DataCrol { // 合併兩個已排好序的數組A[left...mid]和A[mid+1...right] void me

原创 數據結構-快速排序

java實現快速排序 源代碼 public class QuickSort extends DataCrol { /** * 優化 * * @param array * @param lef

原创 DFS,BFS 深度優先遍歷,廣度優先遍歷

java實現DFS,BFS算法 源代碼 圖的結構java實現 public class DFSAndBFS { /** * BFS 只能遍歷連通圖 * * @param graph 圖 *

原创 Floyd(多源最短路徑)

java實現Floyd算法 源代碼 圖的結構java實現 Floyd public class Floyd { private static int INF = Integer.MAX_VALUE; public st

原创 數據結構-圖

java實現圖的數據結構 源代碼 圖的頂點,Vertex public class Vertex<E> { //到該頂點的邊列表 List<Edge> edgeList = new ArrayList<>(); E

原创 數據結構-堆排序

java實現堆排序算法 源代碼 public class HeapSort extends DataCrol { private void heapify(int A[], int i, int size) { // 從A[i]

原创 設計模式--中介者模式

Java工程源碼 類圖 定義 用一箇中介對象封裝一系列的對象交互,中介者使各對象不需要顯示地相互作用,從而使其耦合鬆散,而且可以獨立地改變它們之間的交互 – 優點 - 減少類間的依賴,把原有的一對多的依賴變成了一

原创 設計模式--命令模式

Java工程源碼 類圖 定義 將一個請求封裝成一個對象,從而讓你使用不同的請求把客戶端參數化,對請求排隊或者記錄請求日誌,可以提供命令的撤銷和恢復功能 優點 - 類間解耦 調用者Invoker與接受者rec

原创 Dijkstra 單源最短路徑

java實現Dijkstra算法 源代碼 圖的結構Java實現 Dijkstra public class Dijkstra { private static final int INF = Integer.MAX_VALUE;

原创 Prim(最小生成樹)

java實現Prim算法 源代碼 圖的結構java實現 Prim需要圖是連通圖,生成的圖一定是一棵樹,而Kruskal可能生成森林 Prim public class Prim { private static final

原创 設計模式--訪問者模式

Java工程源碼 類圖 定義 封裝一些作用於某種數據結構中的各元素操作,它可以在不改變數據結構的前提下 定義作用於這些元素的新的操作 優點 - 符合單一職責原則 Element子類和visitor職責

原创 設計模式--備忘錄模式

Java工程源碼 類圖 定義 在不破壞封裝性的前提下,捕獲一個對象內部狀態,並在該對象之外保存這個狀態。 這樣以後就 可將該對象恢復到原先保存的狀態 使用場景 - 需要保存和恢復數據的相關狀態場景

原创 設計模式--模板方法模式

Java工程源碼 類圖 定義 定義一個操作中的算法的框架,而將一些步驟延遲到子類中,使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟 優點 - 封裝不變部分,擴展可變部分 - 提取公共部分代