時間複雜度 :時間複雜度主要衡量的是乙個演算法的執行速度
空間複雜度:主要衡量乙個演算法所需要的額外空間
1.1時間複雜度:
時間複雜度的定義:在電腦科學中,演算法的時間複雜度是乙個函式,它定量描述了該演算法的執行時間。演算法種基本操作的執行次數,為演算法的時間複雜度。
大o的漸進表示法
實際中我們計算時間複雜度時,我們其實並不一定要計算精確的執行次數,而只需要大概執行次數,那麼這裡我們使用大o的漸進表示法。
大o符號(big o notation):是用於描述函式漸進行為的數學符號。
推導大o階方法:
用常數1取代執行時間中的所有加法常數。
在修改後的執行次數函式中,只保留最高端項。
如果最高端項存在且不是1,則去除與這個專案相乘的常數。得到的結果就是大o階。
使用大o的漸進表示法以後,func1的時間複雜度為:
n = 10 f(n) = 100
n = 100 f(n) = 10000
n = 1000 f(n) = 1000000
通過上面我們會發現大o的漸進表示法去掉了那些對結果影響不大的項,簡潔明瞭的表示出了執行次數。
另外有些演算法的時間複雜度存在最好、平均和最壞情況:
最壞情況:任意輸入規模的最大執行次數(上界)
平均情況:任意輸入規模的期望執行次數
最好情況:任意輸入規模的最小執行次數(下界)
例如:在乙個長度為n陣列中搜尋乙個資料x
最好情況:1次找到
最壞情況:n次找到
平均情況:n/2次找到
在實際中一般情況關注的是演算法的最壞運**況,所以陣列中搜尋資料時間複雜度為o(n)
1.2空間複雜度:
乙個演算法在執行過程中臨時占用儲存空間大小的量度。
大o的漸進表示法
1.3遞迴的時間複雜度,空間複雜度
遞迴的時間複雜度:遞迴的次數每次遞迴的時間
遞迴的空間複雜度:遞迴的深度每次遞迴的時間
時間複雜度 空間複雜度
時間複雜度 在電腦科學中,演算法的時間複雜度是乙個函式,它定性描述了該演算法的執行時間。這是乙個關於代表演算法輸入值的字串 的長度的函式。時間複雜度常用大o符號 表述,不包括這個函式的低階項和首項係數。計算時間複雜度的方法 1 只保留高階項,低階項直接丟棄 2 係數不要 3 執行次數是常數是為o 1...
時間複雜度 空間複雜度
演算法複雜度分為時間複雜度和空間複雜度。其作用 時間複雜度是指執行演算法所需要的計算工作量 而空間複雜度是指執行這個演算法所需要的記憶體空間。一 時間複雜度 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道...
時間複雜度 空間複雜度
一 時間複雜度 實際是指程式執行次數,而不是程式執行時間 1.我們一般討論的是最壞時間複雜度,這樣做的原因是 最壞情況下的時間複雜度是演算法在任何輸入例項上執行時間的上限,以最壞代表最全。2.時間複雜度的書寫規則 忽略常數項,用o 1 表示 選取最壞時間複雜度即選取增長最快的項 遞迴的時間複雜度 遞...