上一篇已經把 Graph 畫面整理好了,今天終於要開始把前面寫好的 Dijkstra 執行過程做成動畫。 一開始我想得很單純,既然之前 Bubble Sort、...
上一篇最後提到,我決定換另一種方式來畫 Graph。 一開始會讓使用者調整 Vertex 數量,是因為當節點很少時,其實很容易直接用肉眼判斷最短路徑;但當資料越...
前面已經把 Dijkstra 寫出來了,接下來終於要開始做視覺化。 我原本的構想是: 使用者可以設定 Node 數量 Node ID 使用流水號產生 Weig...
上一篇已經把 Dijkstra 從手算轉成 TypeScript,可以算出每個 Node 從起點出發的最短 Distance。 但今天重新看結果時,我發現還少了...
上一篇已經跑過一次 Dijkstra,知道尋找最短路徑的過程中,需要記錄幾個重要資訊: Distance: 目前從起點到這個節點的最短距離 Previou...
昨天找出了 Graph 中從 A 到 G 的最短路徑,但如果節點越來越多,光靠人工把所有 Path 都列出來比較,顯然不太實際。 所以今天終於要進入這次 Gra...
前面認識 Graph 時有提到,Edge 除了表示兩個 Vertex 之間有連接關係之外,還可以加上 Weight(權重),用來表示距離、時間或成本。 但今天遇...
上一章認識 Graph 之後,我已經知道可以透過 Vertex(頂點) 和 Edge(邊) 表示資料之間的關係。 不過昨天都是先理解 Graph 是怎麼畫出來,...
終於來到新單元啦!前面一路從 Bubble Sort、Quick Sort 學到遞迴,今天要開始認識一個新的資料結構:Graph(圖)。 Graph 對我來說其...
前兩天已經整理好 Quick Sort 的「快照要記什麼」以及「什麼時候記」,原本以為今天終於可以直接開始實作動畫。 但真的開始寫之後,我才發現一個問題: 我原...
昨天理解 Quick Sort 的運作方式後,今天決定自己試著把流程轉成程式碼。 先簡單回顧 Quick Sort 幾個重要概念: Pivot:選擇一個基準...
先祝大家中秋節快樂!🌕 連假開始,別人在切柚子,我也在切—— 只不過我切的是 Array。😂 前面學 Bubble Sort 時,是透過相鄰兩個數字不斷比較...
上一章學到遞迴(Recursion)會在函式裡面不斷呼叫自己,但我一直有個疑問: 函式被呼叫之後,不是馬上就會執行嗎?那為什麼還會有「堆疊」的現象? 我原本以為...
今天開始認識 Recursion(遞迴),查了一下才發現,原來遞迴最基本的概念就是:函式在執行過程中再次呼叫自己。 但為什麼函式需要呼叫自己? 以前端來說,我們...
昨天已經成功把隨機產生的 Array 畫成長條圖,今天終於要開始挑戰這個專案最重要的部分:讓 Bubble Sort 動起來。 目前我把畫面分成三個區塊:左側顯...
昨天理解 Bubble Sort 怎麼運作之後,今天要試著把紙上理解的流程真正轉換成程式碼。 先簡單回顧 Bubble Sort 的三個重要概念: Comp...
以前在前端寫 Code 的時候,我其實完全沒有想過「排序的底層到底是怎麼運作的」。 例如要處理一組資料,我可能就是使用 for 迴圈把資料一個一個拿出來比較,或...
最近開始接觸演算法之後,常常看到一些奇怪的符號: O(1)、O(n)、O(n²)…… 第一次看到的時候真的有點害怕,瞬間勾起數學惡夢(笑)。 但也因為一直看到它...
前兩天開始認識演算法後,我一直看到另一個很常一起出現的名詞:資料結構(Data Structure)。 資料結構的定義就是: 「資料結構(Data Struc...
昨天決定開始學習演算法之後,我第一個遇到的問題不是「哪個演算法比較快」,而是一個更基本的問題: 「所以,演算法到底是什麼?」 身為前端工程師,我們平常其實一直都...
以前的我只在乎「功能做不做得出來」,但隨著專案越來越大,我開始發現,「做得出來」好像不等於「寫得好」。 身為一名前端工程師,我最近一直在思考一個問題: 「演算法...
模組四|蜜蜂、碰撞與勝負(Day 16–20) Day 15 講完玩家畫的那條防線為什麼停不下來、以及最直覺的修法會把遊戲弄壞。今天換到線的另一邊:往線上壓...
模組三|畫線:從手指到剛體(Day 10–15) 昨天的狀態機裡有一個叫 simplifying 的階段,它的內容是四行函式呼叫。今天把那四行拆開。 poi...
我們昨天介紹了資料結構,那今天來簡單的看演算法吧!先簡單解釋一下為什麼要在資料結構的文章裡介紹演算法, 我們經常在各個地方都能看到演算法的存在,其實他沒有你想像...
筆記:【演算法新手村】[初階]筆記03 - 二分練習題 題目 木材廠有 n 根原木,現在想把這些木頭切割成 k 段長度均為 l 的小段木頭(木頭有可能有剩餘)...
筆記:【演算法新手村】[初階]筆記06 - 差分(二維) 題目 在 n × n 的格子上有 m 個地毯。給出這些地毯的信息,問每個點被多少個地毯覆蓋。 I...
筆記:【演算法新手村】[初階]筆記06 - 差分(二維) 題目翻譯 給定一個正整數 n,代表一個初始全為 0、大小為 n × n 的二維矩陣 mat(索引從...
上一篇:【演算法新手村】[初階]筆記06 - 差分(一維) 同樣引入一個問題,給定一個 N × M 的矩陣,有 Q 次操作,每次將左上 (x1, y1) 到右...
筆記:【演算法新手村】[初階]筆記06 - 差分(一維) 題目翻譯 有一輛車,車內共有 capacity 個空座位。這輛車只會向東行駛(也就是說,它不能掉頭向...
筆記:【演算法新手村】[初階]筆記06 - 差分(一維) 題目翻譯 有n 個航班,編號從 1 到 n。給定一個預訂紀錄陣列 bookings,其中 booki...