衡量代碼的運行效率對于工程師來說是一項非常重要的基本技能。
兩種復雜性概述
復雜度是衡量代碼運行效率的重要衡量因素。 對于計算機來說,它是通過程序執行計算任務的過程,即處理輸入數據并獲得最終結果。
編寫代碼的核心是完成計算。
對于同一個計算任務,使用不同的計算方法獲得結果的過程的復雜度是不同的。
例如:數據需要在在線系統中實時處理。 當系統平均每分鐘添加300M數據,而我們的代碼在一分鐘內無法完成這300M數據的處理時,系統就會出現異常。 首先,計算機執行速度變得越來越慢效率是時間還是速度,直到系統死機。
當出現這種問題時,我們首先要從降低代碼復雜度的角度來處理。 這時候我們就需要考慮代碼的時間復雜度和空間復雜度。
對于計算機程序來說效率是時間還是速度,其消耗的資源就是計算過程中所需的時間和空間。
當然,程序的資源消耗不能用絕對的方式來衡量,因為無論是時間還是空間,它們消耗的資源都與輸入數據量密切相關。 準確地說,它們是密切的、正相關的,也就是說,對于少量的數據,消耗的資源自然會更少。
為了更客觀地衡量消耗程度,我們通常關注時間或空間消耗與數據量之間的關系。
第二種復雜性的具體表現
根據復雜度的表達,復雜度可以理解為關于輸入數據量n的函數。 當代碼的復雜度為f(n)時,我們可以使用大寫字母O和括號將復雜度表示為O(f(n))。
例如,O(n)表示復雜度與計算實例數n線性相關;
O(logn)表示復雜度與計算實例的數量n成對數關系。
四種復雜度計算原則
注:O(1)也代表一種特殊的復雜度,即可以用有限且可數的資源來完成某項任務。 這里有限可數的具體含義是它與輸入數據量n無關。