Algorithm - 3週不間斷學習演算法之心得

這個禮拜花了大量的時間研讀演算法,紀錄下學習過程與心得。 清點在這一週中學到了什麼 了解演算法所解決的問題(Problem) 了解各個演算法的解決問題策略與方式。 部分的演算法我能夠以Java來實現。 了解了足夠數量的演算法。 學習演算法 ...
繼續閱讀
Algorithm - 時間複雜度整理
Dynamic Programming cheatsheet
Algorithm - Merge sort(ch2.3)

Algorithm - Merge sort(ch2.3)

#原理每跑過一次merge-sort主程式都會把陣列分割成兩半。直到分成每個元素分離之後,再開始兩兩的排序並合併。合併到最後即為排序好的結果。 #程式碼說明MERGE-SORT主程式負責分割陣列,等到分割到不能分割,也就是每個陣列剩下一個元 ...
繼續閱讀
Algorithm - Quick sort

Algorithm - Quick sort

概念從數列中挑選一個pivot,大於pivot放在右邊,小於pivot放在左邊,重複循環最後得出的陣列即為排序結果。 流程(請搭配虛擬碼的QUICKSORT主程式一起服用) 選擇陣列中的一個元素作為pivot 比pivot小的都移到piv ...
繼續閱讀
Algorithm - Heap sort

Algorithm - Heap sort

Heapheap可看作是幾乎完整的二元樹的陣列。 123456PARENT(i)return i/2LEFT(i)return 2iRIGHT(i)return 2i+1 Max heap與Min heapMax heap最大的元素在根部 ...
繼續閱讀

Algorithm - 最短路徑問題(ch24)

最短路徑問題(Shortest Path)以下說明摘錄自Algorithm「最短路徑」是由起點到終點、權重最小的路徑。 最短路徑問題包括下列幾種:Point-to-Point Shortest Path,點到點最短路徑:給定起點、終點,求出 ...
繼續閱讀

Algorithm - DFS(Depth-First Search)(ch22.3)

頂點的資料結構DFS與BFS不同的是,在頂點上須標明兩個時間標籤(Timestamp,以頂點v為例子,就是v.d和v.f這兩個屬性。所以變成以下三個。u.π - predecessor vertex.u.d - timestamp when ...
繼續閱讀
Algorithm - BFS(Breadth-first Search)(ch22.1 22.2)

Algorithm - BFS(Breadth-first Search)(ch22.1 22.2)

Graph algorithm 符號說明 Graph用G=(V,E)來表示,V是Vertex的縮寫,也就是頂點。E是Edge的縮寫,也就是邊。理解V和E分別是頂點和邊之後,就不難理解Graph是由點和邊構成,所以表示成G=(V,E)。從頂 ...
繼續閱讀

Algorithm - Dijkstra's Algorithm

資料結構Q是一個以d值來做鍵值的Queue,取出時會從最小的d開始取,也就是取出距離最短的頂點V。S是一個頂點的集合,用來存放從Q中刪除的頂點。 Dijkstra’s Algorithm123456789DIJKSTRA(G,w,s)1. ...
繼續閱讀