重念一次早該補起來的「資料結構與演算法」。這篇筆記下一些必備的前置知識重點。
課程相關資訊
[連結]:https://hiskio.com/courses/572/lectures/29766
本篇範圍:Chapter 1 ~ Chapter 3
請注意:本系列文章為個人對應課程的消化吸收後,所整理出來的內容。換言之,並不一定會包含全部的課程內容,也有可能會添加其他資源來說明。
內容
1. Algorithm 是有限的連續指令,以一步步的程序來解決問題
2. 演算法可以透過時間 (比較快)、記憶體使用量和複雜度三個面向來評斷
3. 有鑑於各個測試裝置的配置都不同,一般而言都是以「複雜度」這個面向來做比較
4. 複雜度可分為時間和空間兩個維度
5. 執行次數以函式表示為 f(n) = operation times,其中 n 為 input 的大小
Big O Notation
執行次數函式在趨近於「最壞」的情況下,會執行幾次。換言之,就是執行函式的 UpperBond
Big Omega Notation
執行次數函式在趨近於「最優」的情況下,會執行幾次。換言之,就是執行函式的 LowerBond
Big Theta Notation
執行次數函式在趨近於「平均」的情況下,會執行幾次。
Asymptotic notation
O(1)<O(logN)<O(sqrt(N))<O(N)<O(NlogN)<O(N^2)<O(2^N)<O(N!)