演算法複雜度判斷

2021-09-12 12:23:08 字數 884 閱讀 1391

原文:

下面給出在不同資料範圍下,**的時間複雜度和演算法該如何選擇:

n≤30 指數級別, dfs+剪枝,狀態壓縮dp

n≤100 => o(n

3)

o(n^3)

o(n3

),floyd,dp

n≤1000 => o(n

2),o

(n2l

ogn)

,o(n^2),o(n^2logn),

o(n2),

o(n2

logn

),dp,二分

n≤10000 => o(n

∗n

)o(n* \sqrt )

o(n∗n​

),塊狀鍊錶

n≤100000 => o(n

logn

)o(nlogn)

o(nlog

n)=> 各種sort,線段樹、樹狀陣列、set/map、heap、dijkstra+heap、spfa、求凸包、求半平面交、二分

n≤1000000 => o(n

)o(n)

o(n)

, 以及常數較小的 o(nlogn) 演算法 => hash、雙指標掃瞄、kmp、ac自動機,常數比較小的 o(nlogn) 的做法:sort、樹狀陣列、heap、dijkstra、spfa

n≤10000000 => o(n

)o(n)

o(n)

,雙指標掃瞄、kmp、ac自動機、線性篩素數

n≤10^9 => o(n

)o(\sqrt)

o(n​

),判斷質數

n≤10^18 => o(l

ogn)

o(logn)

o(logn

),最大公約數

演算法複雜度 時間複雜度和空間複雜度

1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數...

演算法複雜度 時間複雜度和空間複雜度

演算法複雜度 時間複雜度和空間複雜度 關鍵字 演算法複雜度 時間複雜度 空間複雜度 1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時 間多,哪個演算法花費的時間少就可以...

演算法複雜度 時間複雜度和空間複雜度

演算法的時間複雜度是指執行演算法所需要的計算工作量。n稱為問題的規模,當n不斷變化時,時間頻度t n 也會不斷變化。但有時我們想知道它變化時呈現什麼規律。為此,我們引入時間複雜度概念。一般情況下,演算法中基本操作重複執行的次數是問題規模n的某個函式,用t n 表示,若有某個輔助函式f n 存在乙個正...