空間復雜度舉例 如何計算一個算法的時間復雜度和空間復雜度?
如何計算一個算法的時間復雜度和空間復雜度?它是根據(jù)一個程序的數(shù)據(jù)n的大小來顯示它所使用的時間和空間的近似值說白了,它是顯示時間或空間是如何隨著n的增長而增長的例如for(int i=0 i這個循環(huán)執(zhí)行
如何計算一個算法的時間復雜度和空間復雜度?
它是根據(jù)一個程序的數(shù)據(jù)n的大小來顯示它所使用的時間和空間的近似值
說白了,它是顯示時間或空間是如何隨著n的增長而增長的
例如
for(int i=0 i
這個循環(huán)執(zhí)行了n次,所以時間復雜度是O(n)
for(int i=0 i
{
for(int j)=0j
}]這個嵌套的兩個循環(huán),時間復雜度是O(n^2)
時間復雜度只能粗略地表示所用的時間
而且一些基本步驟的運行時間是不同的,所以我們無法計算,所以我們省略了
例如
for(int i=0I
a=b
and
for(int i=0I
運行時間當然是第二快的,但是它們的時間復雜度是相同的O(n)
判斷時間復雜度,看循環(huán)
時間復雜度是程序的運行時間,這也可以說是次數(shù);
空間復雜度是程序所占用的空間;
以下程序:
int a[1000000
]int CNT=0
for(int i=0 i
for(int j=0 j
a[CNT]=0
空間主要是一個大小為1000000的數(shù)組a;時間復雜度是兩個for循環(huán)。第一個循環(huán)要做一次,第二個循環(huán)要做1000次,第一個循環(huán)要做1000次,一共1000×1000次
如果兩個循環(huán)分別對應(yīng)m和N次,那么要做的次數(shù)就是m*N
你能聽懂前兩句話嗎?
什么叫時間復雜度和空間復雜度?
當計算機完成任務(wù)時,它有兩個指示器:時間和所有內(nèi)存(即空間)。兩者呈負相關(guān)。也就是說,在設(shè)計特定的程序時,可以選擇使用更多的內(nèi)存,這樣可以提高程序的速度,也就是減少程序的運行時間。另一方面,也可以選擇使用較少的內(nèi)存,這樣可以節(jié)省內(nèi)存,但同時,程序運行速度會變慢,這意味著程序運行時間會更長??傊撍惴ㄖ挥袃煞N策略,一種是以時間換空間,另一種是以空間換時間。直接答案是高空間復雜度和低時間復雜度的算法,反之亦然。