阿川私房教材:
學 JavaScript 前端,帶作品集去面試!

63 個專案實戰,寫出作品集,讓面試官眼前一亮!

立即開始免費試讀!

1. 搜尋演算法

  • 線性搜尋:迭代搜尋陣列中的每個元素。

時間複雜度:O(n)

  • 二分查找:將目標與排序陣列的中間元素進行比較並縮小搜尋範圍。

時間複雜度:O(log2n)

2. 排序演算法

  • 冒泡排序:在重複遍歷中交換相鄰元素。

時間複雜度:O(n²)

  • 插入排序:將元素插入到陣列已排序部分的正確位置。

時間複雜度:O(n²)

  • 選擇排序:在每次遍歷中從未排序的元素中選擇最小值。

時間複雜度:O(n²)

  • 堆排序:使用堆對元素進行排序。

時間複雜度:O(n log n)

  • 合併排序:一種分而治之的演算法,將陣列分開,將每一半排序,然後合併。

時間複雜度:O(n log n)

  • 快速排序:使用樞軸對陣列進行分區和遞歸排序。

時間複雜度:O(n log n)(平均),O(n²)(最壞情況)。

3. 基本數學演算法

  • 歐幾里德 GCD 演算法:透過除法找出最大公約數。

  • 埃拉托斯特尼篩法:透過消除倍數來辨識素數。

  • 位元操作:使用位元運算子進行低階操作。

4.圖形演算法

  • 廣度優先搜尋(BFS):使用佇列逐層遍歷。

  • 深度優先搜尋 (DFS):使用堆疊進行深度探索。

時間複雜度:O(V + E)

  • Dijkstra 演算法:找出加權圖中的最短路徑。

5. 樹演算法

  • 中序遍歷:左子樹→根→右子樹。

  • 前序遍歷:根→左子樹→右子樹。

  • 後序遍歷:左子樹→右子樹→根。

時間複雜度:O(n)

  • 克魯斯卡爾演算法:透過以權重順序新增邊來尋找最小生成樹。

6.動態規劃

  • Floyd-Warshall 演算法:尋找加權圖中所有對之間的最短路徑。使用記憶化(自上而下)和製表(自下而上)。

7. 回溯演算法

  • 解決 N 皇后、子集和、圖形著色和哈密頓循環等問題。

8.霍夫曼壓縮演算法

  • 透過建立霍夫曼樹並根據頻率為字元分配程式碼來壓縮資料。

原文出處:https://dev.to/nozibul_islam_113b1d5334f/must-know-algorithms-3735


共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。

阿川私房教材:
學 JavaScript 前端,帶作品集去面試!

63 個專案實戰,寫出作品集,讓面試官眼前一亮!

立即開始免費試讀!