平時用的少,經常忘記,這裡記錄下時間複雜度的概念
複雜度是演算法的一種標記方法。用o表示,通常讀為big o
o的包含了時間複雜和空間複雜度
這裡就只說時間複雜度。
時間複雜度的概念,個人總結,可能不太準確。
時間複雜度,即標記乙個問題,隨著問題規模的變化,所需要花費時間的關係。時間複雜度就是問題規模和解決問題時間的關係。
這裡有兩個要素:1,問題規模,2,時間t
問題規模n為變數。隨著n的增大,解決時間的變化。
根據自己的理解,時間複雜度和問題規模就是乙個數學問題,我畫了個幾個圖
上圖是線性關係的圖,在**層理解的話,假設解決問題規模和解決問題的時間是線性關係就如上圖。時間複雜度可表示為o(n)
如遍歷陣列一次,陣列的長度為n,n為問題規模,遍歷完陣列的時間即為o,假設遍歷陣列長度為1的陣列所需要的時間是1,那麼n=1,o=1,n=2,o=2……n=n,o=n
那麼他們時間複雜度表示就為o(n)
指數型的時間複雜度,如最近在leetcode中刷題所刷到的題,兩數之和的**如下
class solution ;}}
}throw new illegalargumentexception("no two sum solution");}}
其中的問題規模n=nums.length,遍歷兩次,且是內部遍歷。
n和o的關係是o=n²
時間複雜度為o(n²)
空間複雜度,o(1)
空間複雜度,在程式中就是解決問題所佔增量的n存變化。
上訴**中記憶體占用並不會隨著n的變化而變化。故而為o(1)
演算法複雜度 時間複雜度和空間複雜度
1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數...
演算法複雜度 時間複雜度和空間複雜度
演算法複雜度 時間複雜度和空間複雜度 關鍵字 演算法複雜度 時間複雜度 空間複雜度 1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時 間多,哪個演算法花費的時間少就可以...
演算法複雜度 時間複雜度和空間複雜度
演算法的時間複雜度是指執行演算法所需要的計算工作量。n稱為問題的規模,當n不斷變化時,時間頻度t n 也會不斷變化。但有時我們想知道它變化時呈現什麼規律。為此,我們引入時間複雜度概念。一般情況下,演算法中基本操作重複執行的次數是問題規模n的某個函式,用t n 表示,若有某個輔助函式f n 存在乙個正...