演算法複雜度

2021-09-29 19:59:32 字數 1077 閱讀 4320

演算法複雜度分為時間複雜度演算法複雜度。顧名思義,時間複雜度就是計算一段程式執行時間。而空間複雜度則是計算程式的儲存空間。

如今,大多數情況下我們只是去考慮時間複雜度

若對於乙個演算法,的上界與輸入大小無關,則稱其具有常數時間,記作時間o(1)

int a=0;

system.out.println("123213");

上述語句無論執行多少次。它消耗的時間,不隨變數增長而增長。哪怕執行幾十萬行,都可以用**o(1)**來表示它的時間複雜度。

若演算法的t(n) =o(logn),則稱其具有對數時間。由於計算機使用二進位制的記數系統,對數常常以2為底(即log2n,有時寫作lgn)。然而,由對數的換底公式,logan和logbn只有乙個常數因子不同,這個因子在大o記法中被丟棄。因此記作o(logn),而不論對數的底是多少,是對數時間演算法的標準記法。

n = a^x(a 的 x 次方);x=logan (x以a為底 n的對數)。a成為底數 ,n成為真數

int i=1;

while(i上述** 每次迴圈相當於不斷成以2. 當i大於n時,迴圈結束。可以轉換為n=2^x; =>x = log2n=> 捨棄常熟因子。 時間複雜度就是o(logn)

如果乙個演算法的時間複雜度為o(n),則稱這個演算法具有線性時間,或o(n)時間。非正式地說,這意味著對於足夠大的輸入,執行時間增加的大小與輸入成線性關係。

for(int i=0;i上述**,隨著n的變化執行時間會成乙個線性的增長.時間複雜度o(n)

若乙個演算法時間複雜度t(n) = o(nlog n),則稱這個演算法具有線性對數時間。

for(int m=0;m上述**,裡層是 o(logn);外層也要迴圈n次,這就是 o(n logn)

。。。待續

演算法複雜度 時間複雜度和空間複雜度

1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數...

演算法複雜度 時間複雜度和空間複雜度

演算法複雜度 時間複雜度和空間複雜度 關鍵字 演算法複雜度 時間複雜度 空間複雜度 1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時 間多,哪個演算法花費的時間少就可以...

演算法複雜度 時間複雜度和空間複雜度

演算法的時間複雜度是指執行演算法所需要的計算工作量。n稱為問題的規模,當n不斷變化時,時間頻度t n 也會不斷變化。但有時我們想知道它變化時呈現什麼規律。為此,我們引入時間複雜度概念。一般情況下,演算法中基本操作重複執行的次數是問題規模n的某個函式,用t n 表示,若有某個輔助函式f n 存在乙個正...