[筆記] AlphaCamp 不只是刷題的 Leetcode 訓練營 – 6

一腳踏入軟體工程師寫 Code 的世界,不免俗地會碰上 Leetcode 的測驗,來測試你的溝通力、系統性地解決問題的能力和如何化抽象為具體。第六週的活動主要為 Search & Sort。
[筆記] AlphaCamp 不只是刷題的 Leetcode 訓練營 – 3


課程相關資訊

[連結]:https://www.accupass.com/event/2010251353233453323900

課程對應章節:Week6 U41~U43

請注意:本系列文章為個人對應課程的消化吸收後,所整理出來的內容。換言之,並不一定會包含全部的課程內容,也有可能會添加其他資源來說明。


內容

什麼是演算法

有限時間內,以有限個指令完成特定功能的一種按部就班解決問題的方法。

  1. Input:外界至少提供 ≥ 0 個輸入
  2. Output:Algorithm 至少產生 ≥ 1 個輸出結果
  3. Definiteness (明確):每個指令必須是 Clear and Unambiguous
  4. Finiteness (有限性):Algorithm 在執行有限個步驟後,必定終止
  5. Effectiveness (有效性):用紙跟筆即可追蹤 Algorithm 執行的過程及結果

演算法是抽象的,可用程式語言的特性、邏輯控管…等來實現。

排序演算法

選擇排序法(Selection Sort)

1. 常會使用到雙重迴圈
2. 最後會使用 交換 的方式,來讓陣列得以排序
3. 一一掃瞄未排序資料,找出最大值(or最小)

插入排序法(Insertion Sort)

1. 依序由未排序的資料中選一筆資料
2. 運用 while loop,讓選取的資料得以插入正確位置,且原本在該位置的資料要往右移 ( 由小到大的情況下 )

氣泡排序法(Bubble Sort)

1. 對未排序資料兩兩比對掃瞄
2. 排序後,兩兩會交換位置,會是以最右邊開始陸續出現排序結果

快速排序法(Quick Sort)

1. 將比基準值(Pivot)小的數值移到左邊,大者反之
2. 對基準值的左、右子數列遞迴相同動作

合併排序(Merge Sort)

待整理

堆積排序(Heap Sort)

待整理

以上的圖形化示意可點右邊網址前往觀看:https://visualgo.net/en/sorting


搜尋演算法

線性搜尋法 (Linear Search)

循序搜尋,按照順序一個個找

二元搜尋法 (Binary Search)

必須要先行排序,每次搜尋會留下一半的查找目標

雜湊搜尋法 (Hashing Search)

資料按照某特定法則轉換為資料儲存位置,應用時是以資料鍵值(key value)轉換來查找


LeetCode 題目

324. Wiggle Sort II

連結:https://leetcode.com/problems/wiggle-sort-ii/

853. Car Fleet

連結:https://leetcode.com/problems/car-fleet/

1424. Diagonal Traverse II

連結:https://leetcode.com/problems/diagonal-traverse-ii


相關文章

  • [筆記] AlphaCamp 不只是刷題的 Leetcode 訓練營 – 1
  • [筆記] AlphaCamp 不只是刷題的 Leetcode 訓練營 – 2
  • [筆記] AlphaCamp 不只是刷題的 Leetcode 訓練營 – 3
  • [筆記] AlphaCamp 不只是刷題的 Leetcode 訓練營 – 4
  • [筆記] AlphaCamp 不只是刷題的 Leetcode 訓練營 – 5
  • [筆記] AlphaCamp 不只是刷題的 Leetcode 訓練營 – 5-2
  • [筆記] AlphaCamp 不只是刷題的 Leetcode 訓練營 – 7
  • 按讚加入粉絲團

    延伸閱讀