時間複雜度簡述

2021-08-14 09:07:15 字數 1453 閱讀 2702

演算法複雜度分為時間複雜度和空間複雜度,乙個好的演算法應該具體執行時間短,所需空間少的特點。

隨著計算機硬體和軟體的提公升,乙個演算法的執行時間是算不太精確的。只能依據統計方法對演算法進行估算。我們拋開硬體和軟體的因素,演算法的好壞直接影響程式的執行時間。

我們看一下小例子:

int value = 0;                         // 執行了1次

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

這個演算法執行了 1 + n 次,如果n無限大,我們可以把前邊的1忽略,也就是說這個演算法執行了n次

時間複雜度常用大o符號表示,這個演算法的時間複雜度就是o(n).

概念: 一般情況下,演算法的基本操作重複執行的次數是模組n的某一函式f(n),因此,演算法的時間複雜度記做 t(n) = o(f(n))。 隨著模組n的增大,演算法執行的時間增長率f(n)的增長率成正比,所以f(n)越小,演算法 的時間複雜度越低,演算法的效率越高。

計算時間複雜度

1.去掉執行時間中的所有加法常數。

2.只保留最高端項。

3.如果最高端項存在且不是1,去掉與這個最高端相乘的常數得到時間複雜度

我們看乙個例子

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

}當 i = 0 時 裡面的fo迴圈執行了n次,當i等待1時裡面的for迴圈執行了n -  1次,當i 等於2裡裡面的fro執行了n - 2次........所以執行的次數是

根據我們上邊的時間複雜度演算法

1.去掉執行時間中的所有加法常數: 沒有加法常數不用考慮

2.只保留最高端項: 只保留

3. 去掉與這個最高端相乘的常數:  去掉

最終這個演算法的時間複雜度為

再看乙個線性的

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

因為迴圈要執行n次所以時間複雜度為o(n)

其它的我也就不乙個乙個算了,下面給出了常用的時間複雜度

排序法最差時間分析

平均時間複雜度

穩定度空間複雜度

氣泡排序

o(n2)

o(n2)

穩定o(1)

快速排序

o(n2)

o(n*log2n)

不穩定o(log2n)~o(n)

選擇排序

o(n2)

o(n2)

穩定o(1)

二叉樹排序

o(n2)

o(n*log2n)

不一頂o(n)

插入排序

o(n2)

o(n2)

穩定o(1)

堆排序o(n*log2n)

o(n*log2n)

不穩定o(1)

希爾排序oo

不穩定o(1)

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

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

簡述時間和空間複雜度

就是說這個演算法要進行多少次計算,遍歷。空間複雜度就是說這個演算法需要用到多少空間記憶體等。關於時間複雜度,常見的有o 1 o n o n 2 等 如果說這個演算法的次數是可以確定的,是常數次,比如100次,10000次,那麼時間複雜度就是o 1 比如 int main return0 可以知道只計...

dfs時間複雜度 時間複雜度 空間複雜度

時間複雜度的數學證明方法相對比較複雜,通常在工程實際中,會分析就好。注意 只看最高複雜度的運算 int for for for for int遞迴如何分析時間複雜度?常數係數可以忽略,在分析時不用考慮,只要說以上術語即可。主定理 master throrem 上述第四種是歸併排序,所有排序演算法,最...