一. 複雜度分析的4個概念
- 最好情況下時間複雜度:程式碼在最理想情況下執行的時間複雜度。
- 最壞情況時間複雜度:程式碼在最壞情況下執行的時間複雜度。
- 平均情況時間複雜度:用程式碼在所有情況下執行的次數加權平均值表示。
- 均攤時間複雜度 (攤還分析法):在程式碼執行的所有複雜度情況中;絕大部分是最好情況時間複雜度,個別情況是最壞情況時間複雜度且發生具有時序關係時,可以將個別最壞情況時間複雜度均攤到最好情況時間複雜度上。一般均攤時間複雜度就等於最好情況時間複雜度。
二、為什麼要引入這4個概念?
- 同一段程式碼在不同情況下時間複雜度會出現量級差異,為了更全面、更準確的描述程式碼的時間複雜度,所以引入了這4個概念。
- 程式碼複雜度在不同情況下出現量級差別時才需要區別這四種複雜度,大多數情況下是不需要區分它們的。
三、如何分析平均、均攤時間複雜度?
均攤時間複雜度:對一個資料結構進行一組連續操作中,大部分情況下時間複雜度都很低,只有個別情況下時間複雜度比較高,而且這些操作之間存在前後連貫的時序關係,這個時候,我們就可以將這一組操作放在一塊兒分析,看是否能將較高時間複雜度那次操作的耗時,平攤到其他那些時間複雜度比較低的操作上。而且,在能夠應用均攤時間複雜度分析的場合,一般均攤時間複雜度就等於最好情況時間複雜度。