我發現我就是補坑的,?。。。
各大教材拜託你們提到空間複雜度時也像對待時間複雜度一樣認真好麼?
總是,演算法有兩種思路。一種以時間換空間。一種以空間換時間。
時間換空間的做法使用於微控制器。
既然空間優秀,時間不管你,那就要求空間複雜度低哎。
到底什麼是空間複雜度,我就要搞懂這個問題。
1.演算法本身占用的空間
2.演算法在處理輸入輸出時引入臨時變數,它們占用的空間
3.演算法在執行時占用的空間
三個概念很好理解的。
1,就是寫的演算法**占用多大體積嘛。我們可以想象,我們寫了100頁的演算法**,占用的空間能有多大,所以這部分空間是很省的。–而且存在外存,這個就很廉價了。
2,這個就一般int temp = a,之類的,臨時存放一下資料占用的空間。
3,這個就是比如遞迴,它的1,2真的做的很好,但是它一旦執行起來,它占用的空間就會急速上公升。因為它用了大量的棧嘛。
就地法是什麼?
有的演算法只需占用少量的儲存空間,且儲存空間不隨問題規模的改變而改變。這種演算法是就地的,是節省儲存空間的做法。
遞迴演算法需要占用堆疊,所以就需要大量臨時單元。
若寫成非遞迴,可能演算法本身占用的儲存空間就很大,但能減少儲存單元。
對於非遞迴的演算法呢,它的空間複雜度等於它形參+迴圈體內臨時變數。
對於遞迴的演算法呢,它的空間複雜度等於(它遞迴呼叫的次數 + 1 – 這個1指的是第一次非遞迴的1)* 每一次遞迴所開闢的臨時空間(即堆疊空間)。
時間複雜度 空間複雜度
時間複雜度 在電腦科學中,演算法的時間複雜度是乙個函式,它定性描述了該演算法的執行時間。這是乙個關於代表演算法輸入值的字串 的長度的函式。時間複雜度常用大o符號 表述,不包括這個函式的低階項和首項係數。計算時間複雜度的方法 1 只保留高階項,低階項直接丟棄 2 係數不要 3 執行次數是常數是為o 1...
時間複雜度 空間複雜度
演算法複雜度分為時間複雜度和空間複雜度。其作用 時間複雜度是指執行演算法所需要的計算工作量 而空間複雜度是指執行這個演算法所需要的記憶體空間。一 時間複雜度 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道...
時間複雜度 空間複雜度
一 時間複雜度 實際是指程式執行次數,而不是程式執行時間 1.我們一般討論的是最壞時間複雜度,這樣做的原因是 最壞情況下的時間複雜度是演算法在任何輸入例項上執行時間的上限,以最壞代表最全。2.時間複雜度的書寫規則 忽略常數項,用o 1 表示 選取最壞時間複雜度即選取增長最快的項 遞迴的時間複雜度 遞...