時間複雜度和空間複雜度介紹

2021-09-26 22:11:08 字數 1241 閱讀 7315

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

時間複雜度是程式執行的時間,也可以說是次數;

空間複雜度是程式占用的空間;

來自《資料結構》原圖官方定義(清華出版社)

時間複雜度:

首先要說的是,時間複雜度的計算並不是計算程式具體執行的時間,而是演算法執行語句的次數。

當我們面前有多個演算法時,我們可以通過計算時間複雜度,判斷出哪乙個演算法在具體執行時花費時間最多和最少。

通常我們計算時間複雜度都是計算最壞情況。

常見的時間複雜度有:

常數階o(1),

對數階o(log2 n),

線性階o(n),

線性對數階o(n log2 n),

平方階o(n^2),

立方階o(n^3)

k次方階o(n^k),

指數階o(2^n)。

隨著n的不斷增大,時間複雜度不斷增大,演算法花費時間越多。

空間複雜度:

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

計算方法:

①忽略常數,用o(1)表示

②遞迴演算法的空間複雜度=遞迴深度n*每次遞迴所要的輔助空間

③對於單執行緒來說,遞迴有執行時堆疊,求的是遞迴最深的那一次壓棧所耗費的空間的個數,因為遞迴最深的那一次所耗費的空間足以容納它所有遞迴過程。

舉例:

如下程式:

int a[1000000];

int cnt = 0;

for(int i = 0; i < 1000; i++)

for(int j = 0; j < 1000; j++)

a[cnt++] = 0;

其中空間主要是開了乙個陣列a,大小為1000000;時間複雜的是2個for迴圈,第乙個迴圈做一次,第二個就要做1000次,而第乙個要做1000,則總共要做1000×1000次……

如果2個迴圈分別對應是m,n次,那麼要做的次數就是o(m*n);

時間複雜度空間複雜度介紹

演算法複雜度分為 時間複雜度和空間複雜度。度量乙個演算法執行時間的方法有兩種 在給出間複雜度的概念之前先來看看什麼是時間頻度?計算1到100的和 第一種 使用for迴圈 int sum 0 int n 100for int i 1 i n i 時間頻度t n n 1注意 因為最後還要在判斷一次,所以...

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

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

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

演算法複雜度 時間複雜度和空間複雜度 關鍵字 演算法複雜度 時間複雜度 空間複雜度 1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時 間多,哪個演算法花費的時間少就可以...