演算法01 時間複雜度

2021-10-05 13:28:41 字數 613 閱讀 9131

演算法,通俗來說,就是被設計出來用於解決某個或某類問題,具有一定通用性的計流程和方

解決某個問題,通常有不止一種演算法。評價乙個演算法的優劣,從3個方面進行考察:

時間複雜度

額外空間複雜度

常數項時間

通常用最壞時間複雜度(大寫o)來表示乙個演算法的時間複雜度。

通常估計乙個演算法的時間複雜度是這樣進行的:將演算法的執行過程拆分成乙個個的常數時間操作,然後計算所有常數時間操作的總個數,最後將總個數表示為問題規模n的函式表示式,作為演算法的時間複雜度。

常見的演算法時間複雜度,從好到壞,依次是(求解問題的規模為n):

時間複雜度

典型問題

o(1) 常數時間複雜度

hashmap的put/get

o(logn) 以2為底

二分查詢

o(n)

遍歷找最大值

o(n*logn)

o(n ^ 2) o(n ^ 3) …

o(2 ^ n) o(3 ^ n) …

o(n!)

全排列問題

o(n^n)

n皇后問題

01 時間複雜度 空間複雜度

1 時間頻度 乙個演算法中的語句執行次數稱為語句頻度或時間頻度。記為t n n稱為問題的規模,當n不斷變化時,時間頻度t n 也會不斷變化。2 時間複雜度 若有某個輔助函式f n 使得當n趨近於無窮大時,t n f n 的極限值為不等於零的常數,則稱f n 是t n 的同數量級函式。記作t n f ...

1 時間複雜度

演算法的計算成本涵蓋許多方面,為確定計算成本的度量標準,我們不妨從計算速度這一重要因素入手。但是這一問題並不是容易直接上手回答,原因在於,運算時間是由許多因素綜合作用而決定的。即使是同一演算法,對於不同的輸入所需的運算時間並不相同。問題規模往往是決定計算成本的主要因素。一般的,問題規模越相近,相應的...

0 時間複雜度

快 時間複雜度 省 空間複雜度 def get sum n result 0 for i in range 1,n 1 result i return result假設每行 對應的cpu執行時間一樣,為乙個時間單位unit time 可以看到該函式第2 5行執行1次,第3 4行執行n次 總共執行時間...