演算法空間複雜度

2021-09-30 10:53:21 字數 739 閱讀 9656

1)搞清概念問題

空間複雜度(spacecomplexity)是對乙個演算法在執行過程中臨時占用儲存空間大小的量度。

乙個演算法的

空間複雜度

只考慮在執行過程中為

區域性變數

分配的儲存空間

的大小:

包括為參數列中

形參變數分配的儲存空間和為在

函式體中定義的區域性變數分配的儲存空間兩個部分。

若乙個演算法為

遞迴演算法

,其空間複雜度

為遞迴所使用的

堆疊空間的大小,它等於一次呼叫所分配的臨時

儲存空間

的大小乘以被呼叫的次數(即為

遞迴呼叫

的次數加1,這個1表示開始進行的一次非遞迴呼叫)。

演算法的空間複雜度

一般也以數量級的形式給出。如當乙個演算法的

空間複雜度

為乙個常量

,即不隨被處理資料量n的大小而改變時,可表示為o(1);

當乙個演算法的空間複雜度與以2為底的n的對數成正比時,可表示為o(log2n);

當乙個演算法的空i司複雜度與n成線性比例關係時,可表示為o(n).

若形參為

陣列,則只需要為它分配乙個儲存由

實參傳送來的乙個位址

指標的空間,即乙個

機器字長

空間;

若形參為引用方式,則也只需要為其分配儲存乙個位址的空間,用它來儲存對應實參變數的位址,以便由系統自動引用實參變數。

演算法時間複雜度空間複雜度

演算法 是解決某一類問題的通法,即一系列清晰無歧義的計算指令。每個演算法只能解決具有特定特徵的一類問題,但乙個問題可由多個演算法解決。乙個演算法應該有以下五個方面的特性 比較演算法的優劣我們從兩個維度去進行考量 時間 空間 時間複雜度,空間複雜度 找出基本語句 演算法中執行次數最多的那條語句就是基本...

演算法 時間複雜度 空間複雜度

1 if i 1 2 a 1 result 3 4 result n 2 result 1000 1000 3 array.push a array.pop 4 map.set 1,1 map.get 1,1 在計算複雜度的時候,o 1 一般會被忽略。1 for let i 0 i n i 2 wh...

演算法複雜度 時間複雜度和空間複雜度

1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數...