本系列將會介紹基本與常見的演算法與資料結構,並使用 JavaScript 搭配練習一步步實作。
因筆者也是轉行至軟體工程師的行業,在 CS 相關基礎知識比較薄弱因此工作之後的進修特別著重補強這些知識。
本系列以筆者角度用通俗易懂方式講解,希望能讓讀者更容易理解,也藉由撰寫文章加強自身對於這些知識的理解與練習文筆。
最後希望讀者都能夠學以致用,遇到題目都能輕鬆開墮!
一種排序資料的方式,實務上不太常使用,除了某些特定情境。相對於其他排序方式,Bubble Sort 效能較差。 儘管如此,作為基礎中的基礎,最好還是要理解其概念...
Selection Sort 實作上是遍歷一次陣列,找出最小值,並將最小值與陣列的第一個值交換,以此類推,再遍歷一次陣列 (先前排序好的位置可以略過) 找出最小...
從第二個元素開始,往前比對,如果比前一個元素小,則交換位置,以此類推。 以 [30, 5, 1, 31, 10, 9, 2, 3, 4, 8, 7, 6] 來說...
Linked List 是一種資料結構,由一個個節點 (Node) 鏈結起來組成,本身僅存有 Head Node 和 Tail Node 以及總節點數 (len...
Singly Linked List 與 Doubly Linked List 差別在 Node 的指標一個只有下一個節點,另個有存上下兩個節點。 Doubly...
Stack 是一種 LIFO (Last In First Out) 資料結構 最後一個加入的元素,會被第一個移除。 可應用在回復上一步的功能,在操作繪圖軟體時...
Queue 是一種 FIFO (First In First Out) 資料結構。 第一個加入的元素,會被第一個移除。 可應用在排隊等待處理的功能,像是對戰遊戲...
Merge Sort 是一種透過切分資料再一一合併的排序演算法。 Merge Sort 有使用到 Divide and Conquer 與 Recursion...
Quick Sort 使用基準值 (pivot) 比對排序,並透過 Recursion 的技巧,不斷將每個元素放到正確的位置上。 第一步是從陣列中取出一個數字當...
在這篇之前的排序法都可以用在任何可以比較的資料上,例如一個含有帳戶資料的陣列,按照每個帳戶的 ID 、更新時間、名字、帳戶餘額等等來排序。但 Radix Sor...