演算法 時間複雜度概念及案例

2021-08-21 03:49:21 字數 1293 閱讀 5663

常數時間的操作:乙個操作如果和資料量沒有關係,每次都是固定時間內完成的操作,叫做常數操作。

時間複雜度為乙個演算法流程中,常數運算元量的指標。常用o(讀作big o)來表示。具體來說,在常數運算元量的表示式中,只要高階項不要低階項,也不要高階項的係數,剩下的部分,如果記為f(n),那麼時間複雜度為o(f(n))。

演算法的時間複雜度,用來度量演算法的執行時間,記作: o(f(n))。它表示隨著 輸入大小n的增大,演算法執行需要的時間的增長速度可以用 f(n) 來描述。

上面概念可能比較抽象,下面我們用案例的方式來舉例下,一般我們是先拿到f(n),然後來算下他的時間複雜度,一般我們只保留對函式增長速度較大的函式

例如:

1、f(n)=c(c是常數),我們稱時間複雜度為o(1)

2、f(n)=a*n+b(a和b是常數),我們稱時間複雜度為o(n)

3、f(n)=a*n^2+b*n+c(a,b,c均為常數),我們稱時間複雜度為o(n^2)

4、f(n)=a*n^2*logn+b*n+c(a,b,c均為常數),我們稱時間複雜度為o(n^2*logn)

public string test()
上面的**執行了2次,則f(n)=2;則時間複雜度為o(1);

public

inttest()

system.out.println("hello world3"); // 需要執行 1 次

}

上面的**執行了2n+1次,則f(n)=2n+1,時間複雜度為o(n)

public

inttest()

}}

上面的**執行了n*n次,則f(n)=n^2,時間複雜度為o(n^2)

當出現條件或者順序執行的語句時,總是取最大的時間複雜度,或者說最差的情況

public

inttest()

}//迴圈2:時間複雜度為o(n)

for (int i = 0; i < n; i++)

}

上面**的時間複雜度為o(n^2+n)=o(n^2)

public

inttest()

}}else

}}

上面**的時間複雜度為o(n^2)

演算法時間 空間複雜度案例

1.時間頻度 乙個演算法中的語句執行次數稱為語句頻度或時間頻度。記為t n 乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數多,它花費時間就多。2.演算法的時間複雜度 案例 如果乙個 要對它的使用者發放優惠券,那我們就需要先找到這些使用者。我們用乙個長度為 n 的陣列代...

演算法和時間複雜度概念

時間複雜度計算 時間複雜度距離 空間複雜度分析 是指令的集合,是為解決特定問題而規定的一系列操作,演算法就是計算機解題的過程。乙個演算法通常來說具有以下五個特性 輸入 乙個演算法應以待解決的問題的資訊作為輸入。輸出 輸入對應指令集處理後得到的資訊。可行性 演算法是可行的,即演算法中的每一條指令都是可...

概念理解 時間複雜度 空間複雜度

一.時間複雜度 time complexity 在進行演算法分析時,語句總執行次數t n 是關於問題規模 n 的函式。進而分析執行次數t n 隨規模 n 的變化情況並確定t n 的數量級。演算法的時間複雜度就是演算法的時間度量,記作t n o f n 它表示隨問題規模 n 的增大,演算法的執行時間的...