學習動機與目標

學習資料結構與演算法的動機與目標

-2 min read

先說一下我的背景

我讀的科系跟軟體知識完全沒有關係,是大四下對軟體開發有興趣,學了之後就奮不顧身的踏進了網頁開發的領域。

目前是資歷一年的前端工程師,工作之後在切版都沒有什麼問題,邏輯的設計上都可以應付,但總覺得自己寫出的程式碼與資深同事寫出來的總是有落差,研究了一陣子演算法之後,發現對自己的開發的邏輯跟思考脈絡有很大的幫助,所以決定開始一系列的學習,也希望自己可以朝成為資深工程師的路更前進一步。

接下來會寫一系列的演算法與資料結構相關系列筆記跟心得,也會搭配一些 LeetCode 的題目,脈絡會根據下方參考資料中綜合出一個版本。

動機

  • 資料結構:就是把資料整理成最佳存取效率的結構

正如居家收納,好的收納方式可以讓物品井然有序,取用時方便又快速,反之,凌亂的收納方式,當想要找出想要的物品時,就得要大費周章。資料結構就是程式執行過程中,資料被收納的方式,同樣的一堆資料,用不同結構儲存,就會帶來不同的優缺點,進而左右資料存取的效率。

在成為資深工程師的路上,學習資料結構可以促進我解決能力的問題,使複雜的問題變得簡單,好處理。

學習目標與文章架構(待邊寫邊更新)

  • 什麼是 Big O
  • 演算法
    • 六種排序(bubble、insertion、selection、merge、heap、quick)
    • 搜尋(Linear、binary)
    • 遞迴(recursion)
    • Dynamic Programming
    • Greedy
  • 資料結構
    • B Linked List
    • B Doubly Linked List
    • B Queue
    • B Stack
    • B Hash Table
    • B Heap - max and min heap versions
    • B Priority Queue
    • A Trie
    • A Tree
    • A Binary Search Tree
    • A AVL Tree
    • A Red-Black Tree
    • A Graph (both directed and undirected)
    • A Bloom Filter

javascript 演算法與資料結構路線圖與參考文章