時間複雜度
定義
算法的運行時間可以很直觀的讓我們知道執行的效率,但如果想要準確評估執行的時間,實際上會受到很多外在因素的原因導致。
- 作業系統
- 硬體設備
- 系統環境 ... 等。
上述都會影響算法的實際執行時間,所以除了直接執行外,需要透過某一種方式,來合理且能夠統計執行的時間成本,就是所謂的時間複雜度分析。
統計執行所花費時間的增長趨勢
如同上述描述,統計資料處理的時間其實意義不大,但我們能夠透過將資料量逐漸放大,從而統計出花費時間的趨勢,就可以知道該算法的時間複雜度。
特點
- 能夠有效評估算法的效率 透過統計的趨勢圖,可以知道資料量級與時間成本之間的關係,判斷在需要的情境下,是否可以採用這種算法。
- 統計方式簡單 不再需要關心外在因素,只要在同一個環境下執行所得到的資料量級與時間成本的趨勢,在其他平台或是環境理應是相同的結果。
- 不能僅從時間複雜度來判斷執行效率 例如,有兩個算法的時間複雜度相同,都是屬於常數,不管資料量有多少,執行時間都不會受到影響,但有可能這兩個的固定執行時間差很多,所以無法單純透過時間複雜度來做判斷。
Reference
https://www.hello-algo.com/zh-hant/chapter_computational_complexity/time_complexity/