1.時間複雜度:
一個算法的執行時間這一變化趨勢可表示爲輸入規模的一個函數,稱之爲時間複雜度(time compleity)
影響執行時間的因素有:
- 輸入的實例規模
- 輸入各元素的不同
- 輸入次序
- 不同的硬件平臺上
- 不同的操作系統
因此爲了超脫於具體硬件平臺和軟件環境,我們將時間複雜度理解爲算法中各條指令的執行時間之和(即算法執行基本操作的總次數)。
也就是說T(n)決定於組成算法的所有語句各自的執行次數,以及其中所含基本操作的數目。
實例規模n相同情況下:
規模爲n的所有輸入中選擇執行時間最長者作爲T(n),T(n)就是算法處理規模爲n的問題所需的時間。
當實例規模n足夠大時:
f(n)給出了T(n)增長速度的一個漸進上界,此時
T(n)=O(f(n)),即大O記號表示了一個函數的上限
1.1大O記號的性質(上界):
從這可以看出,大O記號的意義下,函數各項正的常係數可以忽略並且等同於1。後一性質則意味着,多項式中的低次項均可忽略,只保留最高項。
1.2下界
1.3確界
2.空間複雜度
算法所需存儲空間的多少也是衡量其性能的一個重要方面,這就是空間複雜度(space complexity)。
其實相對時間複雜度而言,空間複雜度不是那麼重要。就漸進複雜度的意義而言,在任一算法的任何一次運行過程中所消耗的存儲空間,都不會多於其間所執行基本操作的累計次數。