數據結構和算法算法
算法:解決問題的方法和步驟數據結構
評價算法的好壞:漸近時間複雜度和漸近空間複雜度。數據結構和算法
漸近時間複雜度的大O標記: 排序
- 常量時間複雜度 - 布隆過濾器 / 哈希存儲 搜索
- 對數時間複雜度 - 折半查找(二分查找) 方法
- 線性時間複雜度 - 順序查找 / 桶排序 數據
- 對數線性時間複雜度 - 高級排序算法(歸併排序、快速排序) 動態規劃
- 平方時間複雜度 - 簡單排序算法(選擇排序、插入排序、冒泡排序) 時間
- 立方時間複雜度 - Floyd算法 / 矩陣乘法運算
- 幾何級數時間複雜度
- 漢諾塔
- 階乘時間複雜度
- 旅行經銷商問題
- NP
經常使用算法:
窮舉法 - 又稱爲暴力破解法,對全部的可能性進行驗證,直到找到正確答案。
貪婪法 - 在對問題求解時,老是作出在當前看來 最好的選擇,不追求最優解,快速找到滿意解。
分治法 - 把一個複雜的問題分紅兩個或更多的相同或類似的子問題,再把子問題分紅更小的子問題,直到能夠直接求解的程度,最後將子問題的解進行合併獲得原問題的解。
回溯法 - 回溯法又稱爲試探法,按選優條件向前搜索,當搜索到某一步發現原先選擇並不優或達不到目標時,就退回一步從新選擇。
動態規劃 - 基本思想也是將待求解問題分解成若干個子問題,先求解並保存這些子問題的解,避免產生大量的重複運算。