「30 天的資料結構與演算法之旅」將以 JavaScript 為主要實作語言,系列內容以 Udemy 的 Master the Coding Interview: Data Structures + Algorithms 課程為主,並搭配其他網路資源,帶領大家逐步認識常見的資料結構與演算法。從 Big O、Array、Hash Table、Linked List 等概念出發,進而探索 Sorting、Tree、Graph 等主題,並試著連結日常開發中可能接觸到的實際應用。希望透過這段旅程,不僅認識不同的資料結構與演算法,也能理解它們之間的取捨,在日常開發中找到理解程式的新角度。
前言 今天要介紹的是 Stack~ 先看一段前幾篇一直在用的訂單資料,這次多記了每張訂單買了哪些東西: const orders = { 'A-1003':...
前言 昨天的 Stack 把最後放進去的先拿出來,今天要介紹的 Queue 則是完全相反的那一種:最先放進去的最先拿出來。 先來看一個情境~假設辦公室裡有一台...
前言 今天要介紹的是遞迴 (Recursion)~ 昨天結尾提到,遞迴就是讓函式呼叫自己,每呼叫一次,call stack 就會再疊上一層。而這個東西其實更早...
前言 大部分語言都有內建的排序方法,JavaScript 也不例外,呼叫 array.sort() 以後,就能把陣列排好,那為什麼還要了解排序演算法呢? 其中...
前言 昨天有用三種輸入去跑 Bubble Sort 和 Selection Sort,並整理出各自的執行次數,其中,在已排序那列可看到加了 early exi...
前言 昨天的 Insertion Sort 是一個成本取決於輸入資料形狀的排序演算法,資料越接近已排序狀態,它花費的成本就越少。可是實務上不一定知道資料長什麼...
前言 昨天的 Merge Sort 用分而治之確保每次執行都是 O(N log N),代價是每次合併都要一個新陣列來裝結果,額外空間是 O(N)。那如果新陣列...
前言 昨天有提到 Merge Sort 和 Quick Sort 的取捨,結論是兩個各有好壞。其實 Bubble、Selection、Insertion、Me...
前言 今天要介紹的是 Tree~ 排序的部分告一段落,目前為止介紹的資料結構有個共同點:不管是 Array、Linked List,還是後來的 Stack 與...
前言 昨天用 inorder 遍歷主例那棵 Tree 時,輸出的是 1, 4, 6, 9, 15, 20, 170,剛好由小到大。當時只說這不是巧合,這裡面有...