一、 時間復雜度
全稱是漸進時間復雜度,表示算法的執(zhí)行時間與數(shù)據(jù)規(guī)模之間的增長關系。
三點原則:
1. 只關注循環(huán)執(zhí)行次數(shù)最多的一段代碼
大 O 這種復雜度表示方法只是表示一種變化趨勢。我們通常會忽略掉公式中的常量、低階、系數(shù),只需要記錄一個最大階的量級就可以了。所以,我們在分析一個算法、一段代碼的時間復雜度的時候,也只關注循環(huán)執(zhí)行次數(shù)最多的那一段代碼就可以了。
2. 加法法則:總復雜度等于量級最大的那段代碼的復雜度
代碼中有多段循環(huán)代碼,選取量級最大的那段為標準。
3. 乘法法則:嵌套代碼的復雜度等于嵌套內(nèi)外代碼復雜度的乘積`
與加法法則不同,有嵌套的情況,復雜度應為乘積。
二、 空間復雜度
全稱就是漸進空間復雜度(asymptotic space complexity),表示算法的存儲空間與數(shù)據(jù)規(guī)模之間的增長關系。
空間復雜度較時間復雜度來說要簡單得多,只看要分析的代碼分配了占用多少空間的變量即可,常見的空間復雜度就是 O(1)、O(n)、O(n2 ),對數(shù)階的復雜度平時很少見。