超圖解!一次搞懂演算法|入門篇(Python)

    利用圖解教學,有效且快速學習複雜難懂的演算法與資料結構!

    195
    4.8
    • 五大演算法策略:貪婪法、枚舉法、回溯法、分支界線法、分制法

    • 排序演算法:氣泡排序、插入排序、選擇排序

    • 資料結構:Stack & Queue

    • 資料結構:Array & Linked List

    • 演算法策略:深度優先(DFS) vs 廣度優先(BFS)

    US$43.51

    Click for settings

    00:00
    00:00
    00:00

     

    系列課程組合,一整套完整學習,無需其他額外教材

    # 幫你安排好了課程學習順序,跟著學建立思考邏輯

     

     

     

    課程搶先看

     

    第一章  打開演算法的大門

     

     

    演算法與資料結構的定位

    • 開頭我們將精確定位出,在整個演算法學習中,我們所在站著位置。有了定位,就能「有根有據」的展開學習路徑,建立「系統架構化」的知識體系。
    • 不論學習什麼,明確的「定位」出自己在整個學習藍圖中的位置,是非常重要的。軟體世界要學的何其多,光是演算法就有著自己一片小天地,如果毫無方向的到處這邊學一點、那邊學一點,是沒辦法建立起完整的學習系統,也容易失焦且學習成效低落。

     

     

    演算法的品質:什麼才是「好」的演算法?

    • 為了能快速評估一個演算法的好壞,我們會用到 BigO 這套「簡化版」評估方式,讓我們可以一眼看出演算法的快與慢。

     

     

    演算法的基底結構:陣列(Array) vs 連結串列(Linked List)

    • 大多數進階資料結構都能由 Array 或 Linked List 組成,可以說是所有資料結構的始祖巨人(!?),了解兩者優缺點後,能協助我們判斷何時採用 Array 何時採用 List。

     

     

    演算法的基底策略:衝到底(DFS) or 公平走(BFS)?

    • 演算法的入門從思維切入,當我們在制定策略時,最一開始就須決定我們要「深度」還是要「廣度」?
    • DFS (深度優先) vs BFS (廣度優先) 是演算法思維中最重要的兩大方向,許多進階演算法皆由此延展出來。

     

    ❶ 演算法的實作風格:迴圈 (loop) vs 遞迴 (recursion)

    • 當我們看到程式碼層面時,有兩種實作風格:loop or recursion,絕大多數程式邏輯都能在兩者間替換,但通常也都有一種實作起來更「順手」。
    • 演算法的好兄弟:衝到底(DFS) + 遞迴(recursion)
    • 演算法的好姐妹:公平走(BFS) + 迴圈(loop)

     

    第二章  初出茅廬,小試身手 「排序演算法」▁▂▃▅▆▇

     

    氣泡排序 (Bubble Sort)

    • 氣泡排序法是所有資工學生必學的入門演算法,儘管的時間複雜度表現不佳,但它讓我們首次接觸到實際的演算法邏輯,是一個很好的案例。
    • 透過「大隊接力」的概念,我們能快速掌握氣泡排序法的精髓。
    • 首先,我們將透過 迴圈(loop) 方式實作,之後將其替換成 遞迴(recursion) 實作,馬上實用前面所學的不同實作風格。

     

     

    插入排序 (Insertion Sort)

    • 插入排序法為氣泡排序法的稍微變形,同為大隊接力概念,只不過跑的方向顛倒過來。
    • 同樣,我們將透過 迴圈(loop) 方式實作,之後將其替換成 遞迴(recursion) 實作,馬上實用前面所學的不同實作風格。

     

     

    選擇排序 (Selection Sort)

    • 選擇排序法概念上非常單純,每次挑出最大最小值,往一側交換過去即完成。
    • 同樣,我們將透過 迴圈(loop) 方式實作,之後將其替換成 遞迴(recursion) 實作,馬上實用前面所學的不同實作風格。
    • 不同的是,這次的遞迴實作會加上「回傳值」,是一個不錯的實作小挑戰。

     

    第三章  掌柜的,來一碗資料結構!

     

    Stack (LIFO):吃洋芋片也能學資料結構!? Σ(゚д゚)

    • 嘴饞時常常一片片拿出來啃的洋芋片,也體現了 Stack 這個資料結構「後進先出」(LIFO) 的特性。
    • 此外,我們也會帶出「河內塔」與「遞迴」等程式底層中,運用 Stack 的實際場景,讓我們對 Stack 有更多面向的理解!
    • 我們將同步實作 Array-based & List-based Stack,馬上用上前面所學的基底資料結構。

     

     

    ❶ Queue (FIFO):排隊買票看鬼滅 ︻︻▅▆▇◤

    • Queue的概念非常好理解,就是我們日常生活上排隊的狀況,專業術語稱為「先進先出」(FIFO) 的特性。
    • 我們將同步實作 Array-based & List-based Queue,馬上用上前面所學的基底資料結構。
    • 更進階看下去,我們將介紹到 Circular Queue (環狀),一種透過持續移動「起始標記」與「結束標記」的方式,將陣列看成環狀的 Queue 使用技巧。

     

    Priority Queue:排隊上廁所,憋不住拉! இдஇ

    • Priority Queue 為結合了「Queue」與「最大值排序」的資料結構,能幫我們自動排出陣列中最大最小值,非常好用。
    • 在後續的「演算法五大策略」與「LeetCode實戰」中,我們也會多次利用到 Priority Queue 來實作更複雜的演算法。
    • 我們將同步實作 Array-based & List-based Queue,馬上用上前面所學的基底資料結構。

     

    第四章  扎根腳步:五大演算法策略

     

    ❶ 貪婪法 (Greedy):自信心爆棚,找零錢 & 走迷宮

    • 貪婪法 (Greedy) 是一種不這麽儼僅的演算法,我們所謂的策略多少都是有點過度自信,是否能真的幫我們拿到最佳解,則須看結果才知道。
    • 在「找零錢」的架構圖中,我們會看到貪婪法策略失敗的狀況。
    • 在「走迷宮」的架構圖中,我們則看到貪婪法策略成功的案例,因此貪婪法的使用要特別注意必要的先決條件。

     

     

    ❶ 枚舉法 (Enumeration) :我不聰明,但我很實在

    • 枚舉法 (Enumeration) 是一種直腸子的演算法策略,就是將所有可能都跑過,並從中找出「最佳解」或「合格解」。
    • 我們將以「搭飛機」的案例,快速掌握此概念與程式之間的關係。
    • 屬於「暴力解」範疇之一。

     

    ❶ 回溯法 (Backtracking) :菜市場挑橘子,找出合格解們

    • 回溯法 (Backtracking) 適合用在找尋「合格解」的狀況。
    • 為枚舉法的一種改良,對於沒有希望的分支停止探索、掉頭走人,進而省下時間成本。
    • 同屬於「暴力解」範疇之一。

     

    ❶ 分枝界限法 (branch and bound):丈母娘選婿,挑出最佳解

    • 分枝界線法 (bracn and bound) 適合用在找尋「最佳解」的狀況。
    • 為回溯法的進階改良,有智慧的挑選最有前途的分支先走,讓我們更快找到最佳解、也省去更多分枝探索時間成本。
    • 同屬於「暴力解」範疇之一。

     

     

     

    分治法 (Divide & Conquer):大事化小,小事化無

    • 分治法 (Divide & Conquer) 是一種非常通用的演算法,必學。
    • 核心概念就是定義出 base case,並由小而大疊出最後結果。
    • 我們將以資工必學「河內塔」,來展現分治法與遞迴結合的厲害與美妙之處。
    • Divide & Conquer 是我們後面「樹」系列的中心思想,掌握此單元可大幅度幫助我們後面的學習。

     

    這堂課和其他堂課有什麼不一樣?

    # 為面試打造的實戰寶典,你不再需要其他演算法課程了

     

     

    # 小白友好型課程,面向基礎從 0 開始

     

    即使從沒學過演算法和資料結構也沒關係,一知半解也沒問題!有經驗豐富的老師帶領,更容易從頭開始進行有系統的學習,比起自學更有效率,也能讓知識體系建構的更完整全面,打下扎扎實實的基礎。

     

    # 獨創動畫式教學,讓演算法更容易被理解

     

    看似抽象複雜的演算法其實富有邏輯性,本堂課利用動畫拆解每個演算法流程,用生動的表達方式補充一般的平面概述和圖說,此外還提供大家完整的演算法圖解集,能夠放在手機裡帶著走,隨時隨地拿出來看。

     

    # 實際解題,白板面試不緊張

     

    有在準備面試的求職者,相信對 Leetcode 並不陌生,裡面記錄了各式各樣的題目,堪稱白板面試與線上題庫的測驗題本。本堂課程除了學習演算法和資料結構,還同時搭配 LeetCode 實際解題,雙管齊下加深印象,每個步驟清楚演繹,讓你在面試官前也能侃侃而談。

     

    # 附贈國內外必考白板題解析,上場前先練一遍

     

    自己刷 Leetcode 容易大海撈針沒有方向,因此老師特別整理出國內外業界愛考的面試題型(如:GoogleAmazon),讓你在正式上場前能先試試水溫,了解目前職場環境關心的演算法是什麼,順便檢測自己的實力。

     

    有了穩固的演算法能力,在以下領域,都能倍增你的職場競爭力

     

    獨創式「動畫圖解」演算法,前因後果一目了然

    # 新手也能輕鬆讀懂,讓演算法自己演給你看

     

    為什麼二元樹一下畫左、一下畫右?演算法的概念描述看起來總是抽象又難懂,理解完上一句,下一句馬上就看不懂。來本堂課,老師會告訴不用怕,利用動畫將一連串的排列規則「演」出來,強過只在腦中沙盤推演,吸收更直覺。

     

     

     

    學習+解題的高互動課程,事半功倍

    # 擁有一位解題老師,收穫許多學習夥伴

     

     

    「用圖片高效學程式」臉書專頁:專頁連結

     

    「用圖片高效學程式」YT頻道:頻道連結

     

    「Cloud Taiwan - AWS x GCP x Azure」版主:社團連結

     

    本次課程除了可以透過社群和老師互動問答,也可以與同學一起分享解題時遇到的困難、找出彼此的盲點,有效加深記憶,比獨自解題更有效果!而且老師提供豐富的課後資源,讓你不只購買課程,還能同時擁有多元的自學管道。

     

    誰適合學習這堂課?

    💡 想要進入大公司、一年內準備面試的求職者

    💡 想要提升薪水,補足本科系知識的自學轉職者

    💡 想要融會貫通,學過資料結構與演算法課程的學習者

     

    從長久角度而已,演算法將決定你的技術上線,許多自學的人通常不會有的本科系知識,因此自學想追上其他軟體工程師的人非常適合利用這門課程穩固基礎,可以從頭開始進行有系統的學習,而面試求職、求學更是需要這門課快速複習、刷題解題,在短期內將時間做最有效的應用,提升成功率。

     

    課程使用 Python 實作,我會其他程式語言可以接上嗎?

    可以的!課程主軸是教演算法觀念,實作是輔佐觀念理解。基本上,有熟悉一種語言就能接上,概念都是互通的,僅是語法不同。大多數有物件導向的語言都蠻能互換的(java, python,c#,c++,javascript es6,php等)

     

     

    Content

    • 1-1
      【觀念講解】一次搞懂「資料結構」與「演算法」到底是什麼
    • 1-2
      【觀念講解】演算法的品質:什麼才是「好」的演算法?
    • 1-3
      【觀念講解】演算法的基底結構:陣列(Array) vs 連結串列(Linked List)
    • 1-4
      〖實戰演練〗演算法的基底結構:陣列(Array)
    • 1-5
      〖實戰演練〗演算法的基底結構:陣列(Array) 完整程式碼
    • 1-6
      〖實戰演練〗演算法的基底結構:鏈結串列(Linked List)
    • 1-7
      〖實戰演練〗演算法的基底結構:鏈結串列(Linked List) 完整程式碼
    • 1-8
      【觀念講解】演算法的實作風格:迴圈 (loop) x 吃角子老虎
    • 1-9
      【觀念講解】演算法的實作風格:遞迴 (recursion) x 老和尚說故事
    • 1-10
      【觀念講解】演算法的基底策略:衝到底(DFS) vs 公平走(BFS)?
    • 1-11
      【觀念講解】演算法好兄弟:衝到底(DFS) + 遞迴(Recursion)
    • 1-12
      【觀念講解】演算法好姐妹:公平走(BFS) + 迴圈(Loop)

    Preview

    FAQ

    如果您購買的是募資課程,請在課程的【簡介】中查看開課時間,募資課程將於開課時間所述日期開放同學上課。

     

    若您購買的是一般課程(開放上課課程),則在購買完成後可以立即開始觀看。

     

    所有線上課程皆不受時間限制,享無限次永久觀看!

    Recommendations

    Pre-Purchase Q&A

    Catherine Lin
    Catherine Lin

    老師你好,請問三堂python演算法課程是否有教以下演算法呢?謝謝

        1.    Two Pointers
        2.    Sliding Window
        3.    Tries
        4.    Backtracking
        5.    Intervals
        6.    Bit Manipulation
        7.    Math & Geometry

    矽谷叔叔
    矽谷叔叔

    相關概念都會碰觸到,可以仔細查看章節表看看是否符合需求!

     

    超圖解!一次搞懂演算法|入門篇(Python)

    超圖解!一次搞懂演算法|樹系列(Python)

    超圖解!一次搞懂演算法|Hash 系列(Python)

    Sales Plans