演算法的時間複雜度和空間複雜度怎麼看

2021-03-03 21:24:01 字數 3584 閱讀 8476

1樓:霸王學習機

時間複雜度,就是計算程式執行的時間,空間複雜度, 就是所佔的記憶體空間。

同一問題可用不同演算法解決,而一個演算法的質量優劣將影響到演算法乃至程式的效率。演算法分析的目的在於選擇合適演算法和改進演算法。

電腦科學中,演算法的時間複雜度是一個函式,它定量描述了該演算法的執行時間。這是一個關於代表演算法輸入值的字串的長度的函式。時間複雜度常用大o符號表述,不包括這個函式的低階項和首項係數。

使用這種方式時,時間複雜度可被稱為是漸近的,它考察當輸入值大小趨近無窮時的情況。

空間複雜度(space ***plexity)是對一個演算法在執行過程中臨時佔用儲存空間大小的量度,記做s(n)=o(f(n))。比如直接插入排序的時間複雜度是o(n^2),空間複雜度是o(1) 。而一般的遞迴演算法就要有o(n)的空間複雜度了,因為每次遞迴都要儲存返回資訊。

一個演算法的優劣主要從演算法的執行時間和所需要佔用的儲存空間兩個方面衡量。

演算法的時間複雜度與空間複雜度各是什麼意思

2樓:匿名使用者

是說明一個程式根據其資料n的規模大小 所使用的大致時間和空間說白了 就是表示 如果隨著n的增長 時間或空間會以什麼樣的方式進行增長

例for(int i = 0; i < n;++i);這個迴圈執行n次 所以時間複雜度是o(n)for(int i = 0; i< n;++i)這巢狀的兩個迴圈 而且都執行n次

那麼它的時間複雜度就是 o(n^2)

時間複雜度只能大概的表示所用的時間

而一些基本步驟 所執行的時間不同 我們無法計算 所以省略如for(int i = 0;i < n;++i)a = b;

和for(int i = 0;i < n;++i);這個執行的時間當然是第二個快 但是他們的時間複雜度都是 o(n)判斷時間複雜度看迴圈

3樓:匿名使用者

《計算方法》中有相關的詳細資訊。本質上,不論時間複雜度還是空間複雜度都反應的是問題本身的複雜度。一個計算要不就需要很大的儲存空間來減少計算時間;要不就需要較長的計算時間來節約儲存空間。

時間或空間複雜度也用來衡量各種計算方法對於不同的計算要求的表現。比如,不同的計算方法其實在時空複雜度上是相同的。

關於具體的時間複雜度與空間複雜度是如何量化的,如何計算,如何應用還是仔細看看教材吧。

哪位能舉個例子說明一下演算法中時間複雜度和空間複雜度是怎麼算的

4樓:手機使用者

1.空間複雜度:

比如java中int是4個位元組,long是8個位元組,你可以用long表示一個數字,long a=100,同樣可以用int b=100;這樣我們用int肯定比long要節省空間,再者就是同樣讓許多人編寫一個c程式,其中用的變數的個數可能大不一樣,變數越多可能你的程式越容易讓別人看懂,但變數越少,程式可能看懂的人不多,不過現在都不再強調這複雜度,1g的記憶體多的是了,幾個位元組也不算什麼了,不過在硬體驅動開發的時候比較講究這個

2.時間複雜度:

這是一個相對的概念,比如我用p2的電腦和p4的同樣執行一個程式,你說哪個快?只能在一定的硬體環境下談時間複雜度

;所以程式步的方式來說時間複雜度比較方便

打個比方:

for(int i=0;i<100;i++)sum=sum+i;這條語句執行了100次,就說這條語句的程式步是100;像註釋,宣告語句的程式步都為0;

演算法的時間複雜度和空間複雜度之間有矛盾嗎

5樓:匿名使用者

可以說,有。

對於某個程式,對他進行時間上的優化,可以想到用陣列記錄關鍵字,分治等方法。。。很多都是要用更多空間,甚至說當演算法在基礎空間下采用了最佳演算法時,只有通過以空間換時間的方法優化。

尤其是dp,對於不懂降維、滾動的新手來說,亂開記憶體導致爆cena的現象時有出現,曾經出現過開了2500mb+的。。。。。。但現在無論dev c++還是fp或其它的什麼都有極大的記憶體配置,考試時一般也允許開到128mb。所以放心開吧。

6樓:剛剛1人

他們有區別,矛盾?不是太明白你的意思。時間複雜度是指執行演算法所需要的就是工作量,取決於問題的規模,待處理資料的初態;空間複雜度是執行這個演算法所需要的空間

演算法的空間複雜度於時間複雜度的關係?

7樓:幽靈軍團

有「必定」的話不對。因為對一些特殊情況存在特例有高的時空複雜度或同時為低的時空複雜度。但對一般情況下給定儲存空間如給定65535k的記憶體但不限定時間時,就存在時間空間的負相關關係。

對於既不限定時間,也不限定空間的程式,演算法的時間複雜度和空間複雜度可以同時很大,也可以同時很小。如t(n)=o(n)且s(n)=o(1)的情況比如一個for(i=0;i

演算法的時間複雜度與空間複雜度有之間關係嗎

8樓:匿名使用者

時間複雜度 是演算法的執行時間

空間複雜度是 演算法需要的記憶體空間,兩者沒有必然聯絡。

資料結構中的時間複雜度和空間複雜度怎麼樣理解?

9樓:匿名使用者

時間複雜度為o(

copyf(n))說bai的是演算法的時間t(n)隨n的增長與函式duf(n)的增長速度zhi

相同dao,這裡的"相同"應這樣理解,比如n增長變為原來的兩倍,t(n)與f(n)都變為原來的k倍(增長相同)。如:t(n)=n^2+n+2=o(n^2)的複雜度是說,n變為原來的兩倍,t(n)就變為原來的4倍(n足夠大時)。

……這裡的大o表示時間複雜度只是t(n)的一個上限,即最壞情況,但習慣上都考慮這種情況。

時間複雜度與空間複雜度有什麼關係

10樓:匿名使用者

時間複雜度與空間複雜度沒有必然聯絡。但是也有以空間換時間或時間換空間的,此時,它們就會有影響。像雜湊法,用更多的空間,但時間會小於o(n)。

11樓:蓴灬叔

時間複雜度,就是計算程式執行的時間,空間複雜度, 就是所佔的記憶體空間。

同一問題可用不同演算法解決,而一個演算法的質量優劣將影響到演算法乃至程式的效率。演算法分析的目的在於選擇合適演算法和改進演算法。

電腦科學中,演算法的時間複雜度是一個函式,它定量描述了該演算法的執行時間。這是一個關於代表演算法輸入值的字串的長度的函式。時間複雜度常用大o符號表述,不包括這個函式的低階項和首項係數。

使用這種方式時,時間複雜度可被稱為是漸近的,它考察當輸入值大小趨近無窮時的情況。

空間複雜度(space ***plexity)是對一個演算法在執行過程中臨時佔用儲存空間大小的量度,記做s(n)=o(f(n))。比如直接插入排序的時間複雜度是o(n^2),空間複雜度是o(1) 。而一般的遞迴演算法就要有o(n)的空間複雜度了,因為每次遞迴都要儲存返回資訊。

一個演算法的優劣主要從演算法的執行時間和所需要佔用的儲存空間兩個方面衡量。

12樓:匿名使用者

沒什麼關係,空進複雜度是你用了多少記憶體,時間複雜度是你用了多少時間

演算法的複雜度主要包括演算法的時間複雜度和空間複雜度,演算法的時間複雜度是指

時間複雜度考慮的是演算法的執行時間,因此是d 演算法的空間複雜度指的是什麼?1 簡單來說bai 演算法的空間du 複雜度指的是佔zhi用記憶體 dao,cpu等計算機資源回的程度。答 2 具體點來解釋就是 空間複雜度 space complexity 是對一個演算法在執行過程中臨時佔用儲存空間大小的...

如何計算時間複雜度演算法時間複雜度o1和o2的區別???

定義 如果一個問題的規模是n,解這一問題的某一演算法所需要的時間為t n 它是n的某一函式 t n 稱為這一演算法的 時間複雜性 當輸入量n逐漸加大時,時間複雜性的極限情形稱為演算法的 漸近時間複雜性 我們常用大o表示法表示時間複雜性,注意它是某一個演算法的時間複雜性。大o表示只是說有上界,由定義如...

c語言演算法時間複雜度,C語言演算法的時間複雜度如何計算啊?

外層抄迴圈執 行bain次 i 1,2,3.n 1,內層迴圈執du行n i次zhi,n i n 1,n 2,n 3.1 內層迴圈的daox 執行 1 2 3 n 3 n 2 n 1 n n 1 2 次 看看迴圈體的個來數,一般來說迴圈體自越多 時間bai複雜度越高 例如for i 0 n for j...