演算法的復雜度是指
1. 演算法復雜度
演算法的復雜度是以什麼來度量的?
演算法的復雜度是以時間復雜度和空間復雜度來計算的。
①演算法的時間復雜度
演算法的時間復雜度是指執行演算法所需要的計算工作量。簡單地說,時間復雜度是以時間來衡量的。一般來說,如果演算法運行的時間越長,時間復雜度也就越高。但是同一個演算法,它的運行時間也受到硬體設備的限制,硬體設備越好,運行時間越短。所以在衡量時間復雜度的時候,我們根據演算法的基本語句來求解。
值得注意的是:演算法程序執行的具體時間和演算法的時間復雜度並不是一致的。演算法程序執行的具體時間受到所使用的計算機、程序設計語言以及演算法實現過程中的許多細節的影響。而演算法的時間復雜度與這些因素無關。
演算法的計算工作量是用演算法所執行的基本運算次數來度量的。演算法所執行的基本運算次數與問題的規模有關,而演算法所執行的基本運算次數是問題規模(通常用整數n表示)的函數。所謂問題規模就是問題的計算量的大小。
在具體分析一個演算法的工作量時,在同一個問題規模下,演算法所執行的基本運算次數還可能與特定的輸入有關。即輸入不同時,演算法所執行的基本運算次數不同。
②演算法的空間復雜度
演算法的空間復雜度是指執行這個演算法所需要的內存空間。簡單地說,空間復雜度是演算法在運行時臨時佔用內存空間大小的量度。
演算法執行期間所需的存儲空間包括3個部分:輸入數據所佔的存儲空間;程序本身所佔的存儲空間;演算法執行過程中所需要的額外空間。其中,額外空間包括演算法程序執行過程中的工作單元,以及某種數據結構所需要的附加存儲空間。
如果額外空間量相對於問題規模(即輸入數據所佔的存儲空間)來說是常數,即額外空間量不隨問題規模的變化而變化,則稱該演算法是原地工作的。
為了降低演算法的空間復雜度,主要應減少輸入所佔的存儲空間以及額外空間,通常採用壓縮存儲技術。
總結:
採用不同的存儲結構,其數據處理的效率是不同的。因此,在進行數據處理時,選擇合適的存儲結構很重要。
2. (21) 演算法的空間復雜度是指______。
(21)[答案]D
[考點]程序設計基礎
[評析]
時間復雜度:在運行演算法時所耗費的時間為f(n)(即 n的函數)。
空間復雜度:實現演算法所佔用的空間為g(n)(也為n的函數)。
演算法為什麼會佔用存儲存空間?
主要是內存空間,因為演算法中的變數、地址等等通常保存在內存中(如果在虛存、緩存,甚至已在CPU中運行,也算佔用了存儲空間)。