用另乙個(通常更簡單的)函式來描述乙個函式數量級的漸近上界。
大o表示法:
稱乙個函式g(n)是o(f(n)),當且僅當存在常數c>0和n0>=1對一切n>n0均有|g(n)|<=c|f(n)|成立,也稱函式g(n)以f(n)為界或者稱g(n)受限於f(n)。 記作g(n)=o(f(n))。
定義:如果乙個問題的規模是n,解這一問題的某一演算法所需要的時間為t(n),它是n的某一函式。t(n)稱為這一演算法的「時間複雜度」。
當輸入量n逐漸加大時,時間複雜度的極限情形稱為演算法的「漸近時間複雜度」。
看到這我是一臉懵逼
用於分析演算法複雜性。
分析演算法複雜度時,用的o都代表無窮大漸進,表示n趨近於無窮大的情況.
複雜度與時間效率的關係:
c < log2n < n < n*log2n < n2 < n3 < 2n < 3n < n! (c是乙個常量)
符號名稱(後面都要+個「階」)
o(1)
常數o(log n)
對數,情況最多的底數為2(但也可能為其它),但是底數無關緊要,所以不明確說底數
o[(long n)c]
多對數o(n)
線性o(n log* n)
log* n為迭代對數
o(n log n)
線性對數
o(n2)
平方o(nc),interger(c>1)
多項式,有時叫「代數」
o(cn)
指數,有時叫「幾何」
o(n!)
階乘,有時叫「組合」
//第一段
int n = 100;
int x = 0;
for (int i = 1; i <= n; i++)
//第二段
x = 0;
for (int i = 1; i <= n; i++)
}
第一段:經行了n次迴圈計算,得時間複雜度為ο(n);
第二段:經行了n2次迴圈計算,得時間複雜度為ο(n2);
兩段一起:ο(n+n2)=>o(n2)
大o表示法只是乙個粗略的估算值,它關注與隨著資料量n的增大,演算法速度的變化。
對於陣列某個下標的賦值,演算法消耗的時間是個常數k
對於線性的查詢,演算法的消耗時間與n成正比。
對於二分查詢,演算法消耗時間與log(n)成正比。
大O表示法
大o表示法 汽交按尺寸被分為若干類 微型 小型 中型等等。在不提及具體尺寸的情況下,這些分類可以為我們所涉及到車的大小提供乙個大致慨念。我們同樣也需要一種快捷的方法來評價計算機演算法的效率,在電腦科學中,這種粗略的度量方法被稱作 大o 表示法。在比較演算法時似乎應該說一些類似 演算法a比演算法b快兩...
大o表示法
下面是一些常用的時間複雜度以及簡單的定義 o 1 常量時間 o 1 表示該演算法的執行時間 或執行時占用空間 總是為乙個常量,不論輸入的資料集是大是小。bool isfirstelementnull ilistelements o n o n 表示乙個演算法的效能會隨著輸入資料的大小變化而線性變化。...
大O表示法
概念 大o表示法是和資料項的個數相關聯的粗略度量演算法時間複雜度的快捷方法。常數 乙個無序可重複陣列插入乙個資料項的時間t是常數k,常數k表示一次插入所花費的時間,包含cpu 編譯器等工作時間。可表示為 t k 線性查詢 從陣列中線性查詢乙個資料項平均需要n 2步,每步所花費的時間為k 可表示為 t...