時間複雜度:是用來衡量當問題規模擴大後,演算法執行的時間增長程度。而不是程式解決問題需要的時間,解決問題所需要的時間取決於計算機效能和問題規模。解決相同規模的問題時,時間複雜度越大,解決問題所需的時間就越長。
問題的規模:排序問題,需要排序的資料量即為問題的規模;有的搜尋演算法,解空間的規模為問題的規模
不同級別複雜度
o(1):常數級複雜度,程式執行時間恆定,不隨資料規模而變化;單一表示式複雜度
o(n):線性複雜度,執行時間和資料規模成正比;一重迴圈複雜度
o(log(n)):對數複雜度
o(n^2):執行時間是資料規模冪指數,資料擴大2倍,時間變慢4倍。二重迴圈複雜度
o(a^n):指數級複雜度
o(n!):階乘級複雜度
o(1)、o(log(n))、o(n)、o(n^a)等,規模n出現在底數的位置,是多項式級的複雜度; o(a^n)和o(n!)是非多項式級的複雜度。
空間複雜度
同理,空間複雜度是用來衡量當問題規模擴大後,演算法執行占用空間的增長程度。
時間複雜度和空間複雜度的關係
我們通常選擇多項式級的複雜度的演算法。非多項式級的複雜度的演算法執行時間和占用空間隨著問題規模的增大會膨脹,超出硬體承受能力。
對於乙個演算法來說,空間複雜度和時間複雜度往往是相互影響的。有的時候需要以時間換空間,而有的時候就要以空間換時間。
演算法複雜度 時間複雜度和空間複雜度
1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數...
演算法複雜度 時間複雜度和空間複雜度
演算法複雜度 時間複雜度和空間複雜度 關鍵字 演算法複雜度 時間複雜度 空間複雜度 1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時 間多,哪個演算法花費的時間少就可以...
演算法複雜度 時間複雜度和空間複雜度
演算法的時間複雜度是指執行演算法所需要的計算工作量。n稱為問題的規模,當n不斷變化時,時間頻度t n 也會不斷變化。但有時我們想知道它變化時呈現什麼規律。為此,我們引入時間複雜度概念。一般情況下,演算法中基本操作重複執行的次數是問題規模n的某個函式,用t n 表示,若有某個輔助函式f n 存在乙個正...