空間復(fù)雜度
我們在寫代碼時,完全可以用空間來換去時間枕磁。
舉個例子說渡蜻,要判斷某年是不是閏年,你可能會花一點(diǎn)心思來寫一個算法计济,每給一個年份茸苇,就可以通過這個算法計算得到是否閏年的結(jié)果。
另外一種方法是沦寂,事先建立一個有2050個元素的數(shù)組学密,然后把所有的年份按下標(biāo)的數(shù)字對應(yīng),如果是閏年传藏,則此數(shù)組元素的值是1腻暮,如果不是元素的值則為0彤守。這樣,所謂的判斷某一年是否為閏年就變成了查找這個數(shù)組某一個元素的值的問題哭靖。
第一種方法相比起第二種來說很明顯非常節(jié)省空間具垫,但每一次查詢都需要經(jīng)過一系列的計算才能知道是否為閏年。第二種方法雖然需要在內(nèi)存里存儲2050個元素的數(shù)組款青,但是每次查詢只需要一次索引判斷即可做修。
這就是通過一筆空間上的開銷來換取計算時間開銷的小技巧。到底哪一種方法好抡草?其實(shí)還是要看你用在什么地方饰及。
算法的空間復(fù)雜度通過計算算法所需的存儲空間實(shí)現(xiàn),算法的空間復(fù)雜度的計算公式記作:S(n)=O(f(n))康震,其中燎含,n為問題的規(guī)模,f(n)為語句關(guān)于n所占存儲空間的函數(shù)腿短。
當(dāng)直接要讓我們求“復(fù)雜度”時屏箍,通常指的是時間復(fù)雜度。