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

2021-10-05 22:43:42 字數 870 閱讀 9726

平時用的少,經常忘記,這裡記錄下時間複雜度的概念

複雜度是演算法的一種標記方法。用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 存在乙個正...