Skip to main content

時間複雜度

定義

算法的運行時間可以很直觀的讓我們知道執行的效率,但如果想要準確評估執行的時間,實際上會受到很多外在因素的原因導致。

  1. 作業系統
  2. 硬體設備
  3. 系統環境 ... 等。

上述都會影響算法的實際執行時間,所以除了直接執行外,需要透過某一種方式,來合理且能夠統計執行的時間成本,就是所謂的時間複雜度分析。

統計執行所花費時間的增長趨勢

如同上述描述,統計資料處理的時間其實意義不大,但我們能夠透過將資料量逐漸放大,從而統計出花費時間的趨勢,就可以知道該算法的時間複雜度。

特點

  1. 能夠有效評估算法的效率 透過統計的趨勢圖,可以知道資料量級與時間成本之間的關係,判斷在需要的情境下,是否可以採用這種算法。
  2. 統計方式簡單 不再需要關心外在因素,只要在同一個環境下執行所得到的資料量級與時間成本的趨勢,在其他平台或是環境理應是相同的結果。
  3. 不能僅從時間複雜度來判斷執行效率 例如,有兩個算法的時間複雜度相同,都是屬於常數,不管資料量有多少,執行時間都不會受到影響,但有可能這兩個的固定執行時間差很多,所以無法單純透過時間複雜度來做判斷。

Reference

https://www.hello-algo.com/zh-hant/chapter_computational_complexity/time_complexity/