時間復(fù)雜度o(1), o(n), o(logn), o(nlogn)
1、時間復(fù)雜度o(1), o(n), o(logn), o(nlogn)纫塌。算法時間復(fù)雜度有的時候說o(1), o(n), o(logn), o(nlogn)苛萎,這是算法的時空復(fù)雜度的表示桨昙。不僅僅用于表示時間復(fù)雜度,也用于表示空間復(fù)雜度腌歉。O后面的括號中有一個函數(shù)蛙酪,指明某個算法的耗時/耗空間與數(shù)據(jù)增長量之間的關(guān)系。其中的n代表輸入數(shù)據(jù)的量翘盖。
大O描述的是算法的運行時間和輸入數(shù)據(jù)之間的關(guān)系桂塞。
2、時間復(fù)雜度為O(1)
是最低的時空復(fù)雜度了馍驯,也就是耗時/耗空間與輸入數(shù)據(jù)大小無關(guān)阁危,無論輸入數(shù)據(jù)增大多少倍,耗時/耗空間都不變汰瘫。
哈希算法就是典型的O(1)時間復(fù)雜度狂打,無論數(shù)據(jù)規(guī)模多大,都可以在一次計算后找到目標(biāo)(不考慮沖突的話)吟吝。
3、時間復(fù)雜度為O(n)
就代表數(shù)據(jù)量增大幾倍颈娜,耗時也增大幾倍剑逃。
比如常見的遍歷算法浙宜。再比如時間復(fù)雜度O(n^2),就代表數(shù)據(jù)量增大n倍時蛹磺,耗時增大n的平方倍粟瞬,這是比線性更高的時間復(fù)雜度。
比如冒泡排序萤捆,就是典型的O(n^2)的算法裙品,對n個數(shù)排序,需要掃描n×n次俗或。
4市怎、時間復(fù)雜度為O(logn)
當(dāng)數(shù)據(jù)增大n倍時,耗時增大logn倍(這里的log是以2為底的辛慰,比如区匠,當(dāng)數(shù)據(jù)增大256倍時,耗時只增大8倍帅腌,是比線性還要低的時間復(fù)雜度)驰弄。
二分查找就是O(logn)的算法,每找一次排除一半的可能速客,256個數(shù)據(jù)中查找只要找8次就可以找到目標(biāo)戚篙。
指數(shù)函數(shù):一般地,y=a^x函數(shù)(a為常數(shù)且以a>0溺职,a≠1)叫做指數(shù)函數(shù)岔擂。y=a^x表示a的x次方。
對數(shù)函數(shù):如果a^x =N(a>0辅愿,且a≠1)智亮,那么數(shù)x叫做以a為底N的對數(shù),記作x=logaN点待,讀作以a為底N的對數(shù)阔蛉,其中a叫做對數(shù)的底數(shù),N叫做真數(shù)癞埠。
5状原、時間復(fù)雜度為O(nlogn)
就是n乘以logn,當(dāng)數(shù)據(jù)增大256倍時苗踪,耗時增大256*8=2048倍颠区。這個復(fù)雜度高于線性低于平方。
歸并排序就是O(nlogn)的時間復(fù)雜度通铲。