首頁 > 繪畫

時間複雜度

作者:由 情唐智人 發表于 繪畫日期:2021-12-28

保留時間用什麼表示

演算法的好與壞

衡量演算法的標準有很多,其中最主要的兩種是時間複雜度和空間複雜度。

由於受輸入規模和環境的影響,我們無法估計準確的時間耗費和空間耗費,但我們可以根據程式碼來預估執行的大概時間和大概空間。

1、基本操作執行次數Tn

將每條程式碼執行的時間都設定為單位時間,計算程式最終執行的大致時間。

2、漸進時間複雜度

如果只用基本執行操作次數Tn來表示程式執行的大致時間,會存在一定的理論不足,因為我們無法確定n到底執行了多少次,自然無法估計哪一中演算法更快。

因此,為了解決這個難題,有了漸進時間複雜度的概念。

漸進時間複雜度的官方定義:

若存在函式fn,使得n趨於無窮大的時候,Tn/fn的極限值為不等於0的常數時,則稱fn是Tn的同數量級函式。記作Tn=O(fn),稱為O(fn),O為演算法的漸進時間複雜度,簡稱為時間複雜度。

這就是廣為人知的大O表示法。

理解:實際上就是將基本執行操作次數Tn的n設定為無窮大,求其最簡化形式的同數量級函式。

3、推導時間複雜度的幾個原則

因為大O表示法求的是當n趨於無窮大時,其執行次數的最簡化形式的同數量級函式。因此,需要遵循一些原則:

如果執行的時間是常數量級,則用常數1表示

只保留時間函式中的最高階項

如果最高階項存在,則省去最高階項前面的係數

舉例:

Tn =3 等價於Tn=O(1)

Tn=3n 等價於Tn=O(n)

Tn=5lgn等價於Tn=O(lgn),注意這裡的lgn是省略掉了底數2

Tn=n*n*0。5+n等價於Tn=O(n*n)

這裡我們涉及到了4種經典的時間複雜度,O(1),O(n),O(lgn),O(n*n),當n足夠大的時候,演算法的執行時間為:

O(1)