簡述時間和空間複雜度

2021-09-29 12:23:55 字數 1238 閱讀 8967

就是說這個演算法要進行多少次計算,遍歷。

空間複雜度就是說這個演算法需要用到多少空間記憶體等。

關於時間複雜度,常見的有o(1),o(n),o(n^2)等;

如果說這個演算法的次數是可以確定的,是常數次,比如100次,10000次,那麼時間複雜度就是o(1)。

比如:

int

main()

return0;

}

可以知道只計算1000次,所以時間複雜度為o(1);

如果是不確定的比如for迴圈

for

(size_t i =

0;i)

像這樣一層是n次,時間複雜度o(n)。

如果再巢狀一次。

for

(size_t i =

0;i)}

就是n*n。時間複雜度o(n^2);

類似三層巢狀就是o(n^3);

類似的,有這樣情況:

for

(size_t i =

0;i)for

(size_t i =

0;i)

複雜度是n+n = 2n;一般都忽略係數,一律記作o(n);

同樣的,如複雜度是n*n +n+n+100;記作o(n^2);

類推其他情況都一樣,都看複雜度最高的那一項;

比較特殊的有o(logn),o(2^n);

二分法的時間複雜度為o(logn)

int

binarysearch

(int

* a,

int n,

int x)

return-1

;}

計算費波納茨演算法為o(2^n)

long

long

fibonacci

(size_t n)

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

因為硬體技術的提高,現在絕大多數情況都擁有足夠的空間,所以不常用;

一般直接呼叫排序演算法空間複雜度是o(1) 。而一般的遞迴演算法就要有o(n)的空間複雜度了。

下面是我整理的一些排序複雜度表:

時間複雜度和空間複雜度簡述

定義 乙個演算法中的語句執行次數稱為語句頻度或時間頻度 約定 檢驗演算法的效率,主要考慮最壞時間複雜度和平均時間複雜度一般不特別說明,討論的時間複雜度均是最壞情況下的時間複雜度 1 時間複雜度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個...

時間複雜度和空間複雜度

同一問題可用不同演算法解決,而乙個演算法的質量優劣將影響到演算法乃至程式的效率。演算法分析的目的在於選擇合適演算法和改進演算法。乙個演算法的評價主要從時間複雜度和空間複雜度來考慮。1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能...

時間複雜度和空間複雜度

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