科學知識 時間複雜度計算方法

2022-09-27 05:42:09 字數 1225 閱讀 6605

一、定義

(1)如果乙個問題的規模是n,解這一問題的某一演算法所需要的時間為t(n),它是n的某一函式 t(n)稱為這一演算法的「時間複雜性」。我們常用大o表示法表示時間複雜性,稱之為大o記法。

(2)乙個問題本身也有它的複雜性,如果某個演算法的複雜性到達了這個問題複雜性的下界,那就稱這樣的演算法是最佳演算法。常見的時間複雜度高低順序如下:

o(1) 常數階 < o(logn) 對數階 < o(n) 線性階 < o(nlogn) < o(n^2) 平方階 < o(n^3) &l程式設計客棧t; o(2^n) < o(n!) < o(n^n)

二、時間複雜度計算步驟

⑴ 找出演算法中的基本語句;

演算法中執行次數最多的那條語句就是基本語句,通常是最內層迴圈的迴圈體。

⑵ 計算基本語句的執行次數的數量級;

只需計算基本語句執行次數的數量級,這就意味著只要保證基本語句執行次數的函式中的最高次冪正確即可,可以忽略所有低次冪和最高次冪的係數。這樣能夠簡化演算法分析,並且使注意力集中在最重要的一點上:增長率。

⑶ 用大記號www.cppcns.com表示演算法的時間效能。

將基本語句執行次數的數量級放入大記號中。

如果演算法中包含巢狀的迴圈,則基本語句通常是最內層的迴圈體,如果演算法中包含並列的迴圈,則將並列迴圈的時間複雜度相加。

三、時間複雜度計算規則

(1)對於一些簡單的輸入輸出語句或賦值語句,近似認為需要o(1)時間

(2)對於順序結構,需要依次執行一系列語句所用的時間可採用大o下"求和法則"

求和法則:是指若算jsytpj法的2個部分時間複雜度分別為 t1(n)=o(f(n))和 t2(n)=o(g(n)),則 t1(n)+t2(n)=o(max(f(n), g(n)))

特別地,若t1(m)=o(f(m)), t2(n)=o(g(n)),則 t1(m)+t2(n)=o(f(m) + g(n))

(3)對於選擇結構,如if語句,它的主要時間耗費是在執行then字句或else字句所用的時間,需注意的是檢驗條件也需要o(1)時間

(4)對於迴圈結jsytpj構,循jsytpj環語句的執行時間主要體現在多次迭代中執行迴圈體以及檢驗迴圈條件的時間耗費,一般可用大o下"乘法法則"

乘法法則: 是指若演算法的2個部分時間複雜度分別為 t1(n)=o(f(n))和 t2(n)=o(g(n)),則 t1*t2=o(f(n)*g(n))

(5)對於複雜的演算法,可以將它分成幾個容易估算的部分,然後利用求和法則和乘法法則技術整個演算法的時間複雜度

本文位址:

時間複雜度計算方法

o 1 constant complexity constant 常數複雜度 o log n 對數複雜度 o n 線性時間複雜度 o n 2 平方 o n 3 立方 o 2 n 指數 o n 階乘 隨著現在儲存空間的便宜,很多情況下,我們是願意用空間複雜度來換取時間複雜度的,因為記憶體,磁碟等這些和...

時間複雜度計算方法

o 1 constant complexity constant 常數複雜度 o log n 對數複雜度 o n 線性時間複雜度 o n 2 平方 o n 3 立方 o 2 n 指數 o n 階乘 隨著現在儲存空間的便宜,很多情況下,我們是願意用空間複雜度來換取時間複雜度的,因為記憶體,磁碟等這些和...

時間複雜度計算方法

1.形如 t n a t n b f n 的時間複雜度計算方法 有一種方法叫做主方法 master method 是用來專門計算這種形式的時間複雜度的,方法具體如下 下邊舉例進行說明 例1 t n 25 t n 5 n 2 因為 a 25,b 5,d 2,f n n 2 所以此例符合master m...