時間復(fù)雜度和空間復(fù)雜度(二)

這節(jié)呢缅叠,主要說下,簡單的時間復(fù)雜度和時間復(fù)雜度怎么一眼就看出虏冻。
下一接會具體說明最好肤粱,最壞,分擔復(fù)雜度厨相。

一领曼、時間復(fù)雜度

例子:

1 private int  test() {
2       int count = 0;
3       for (int i = 0; i < 10; i++){
4            count +=i;
5        }
6        return  count;
7    }

忽略CPU 等其他因素的時間,大概估算下蛮穿。
假設(shè):第2句代碼耗時1個單位cost_time庶骄,3-4行執(zhí)行了n次,耗時為2n個cost_time,
那么整體耗時多少呢践磅?
耗時: totlaTime = cost_time + 2n*cost_time = (2n+1)cost_time
可以看出來单刁,所有代碼的執(zhí)行時間 T(n) 與每行代碼的執(zhí)行次數(shù)成正比。
所以就可以大概可以總結(jié)為:T(n) = O(n)
簡單的分析就是府适,分析時間復(fù)雜度時羔飞,忽略其他一些常量參數(shù),因為在大數(shù)量級面前檐春,常量數(shù)據(jù)并不影響最后的結(jié)果逻淌,可以簡單的認為對于單層循環(huán)而言,時間復(fù)雜度為O(n),同理2層循環(huán)便是O(n^2),其他同理.
那么對于一段代碼具有單層循環(huán)和多層循環(huán)時間復(fù)雜度是多少呢疟暖,這里呢卡儒,按照最大的時間復(fù)雜度算就對了。
比如

private int  test() {
        int count = 0;
        int count1 = 0;
        for (int i = 0; i < 10; i++){
            count +=i;
        }

        for (int i = 0 ;i <10;i++){
            for (int j =0;j < 10 ; j ++){
                count1 += j * i;
            }
        }
        return  count;
    }

那么這個的時間復(fù)雜度就是: O(n^2)
常見的時間復(fù)雜度:

O(1)(常數(shù)階)俐巴、O(logn)(對數(shù)階)骨望、O(n)(線性階)、O(nlogn)(線性對數(shù)階)欣舵、O(n^2)(平方階)擎鸠、O(n^3)(立方階)

注意:
1.O(1) 并不是只有一行代碼,時間復(fù)雜度就是O(1),O(1) 只是常量級時間復(fù)雜度的一種表示方法,比如下面代碼是2行邻遏,時間復(fù)雜度也是O(1)糠亩。只要代碼的執(zhí)行時間不隨 n 的增大而增長,這樣代碼的時間復(fù)雜度我們都記作 O(1)准验。

int i = 3赎线;
int j = 99;
  1. 常見的O(logn)(對數(shù)階) 是怎么樣的形式呢?
int i =1;
while(i < n ){
  i = i * 3 ;
}

從代碼中可以看出糊饱,變量 i 的值從 1 開始取垂寥,每循環(huán)一次就乘以 3。當大于 n 時,循環(huán)結(jié)束滞项。
回憶高中時的內(nèi)容狭归,是不是就是一個等比數(shù)列:3 9 27 71..... k => 3^0 3^1 3^2 3^3 ...... 3^x,
3^x = n => n = log3n 忽略常數(shù),可以得出 logn

二文判、空間復(fù)雜度

空間復(fù)雜度指的是除特定空間外过椎,重新申請開辟的空間,以代碼為例

 private int[] test(int n){
        
        int[] a = new int[n];

        for (int i =0; i <n; ++i) {
            a[i] = i * i;
        }
        return a;
    }

考慮空間復(fù)雜度時還是忽略一些常量數(shù)據(jù)戏仓,比如可以看到申請一個大小為n的數(shù)據(jù)空間疚宇,和一個常量的空間i,忽略常量,那么只剩n個內(nèi)存空間赏殃,那么可以大概說明空間復(fù)雜度為O(n),用算法舉例更具說服力敷待。

image.png

映射上節(jié)的純文字敘述:

復(fù)雜度分析方法
  • 單段代碼看高頻:比如循環(huán)。
  • 多段代碼取最大:比如一段代碼中有單循環(huán)和多重循環(huán)仁热,那么取多重循環(huán)的復(fù)雜度榜揖。
  • 嵌套代碼求乘積:比如遞歸、多重循環(huán)等抗蠢。
  • 多個規(guī)模求加法:比如方法有兩個參數(shù)控制兩個循環(huán)的次數(shù)举哟,那么這時就取二者復(fù)雜度相加。

第三節(jié)傳送門:http://www.reibang.com/p/0314afcde9b0

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末物蝙,一起剝皮案震驚了整個濱河市炎滞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌诬乞,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钠导,死亡現(xiàn)場離奇詭異震嫉,居然都是意外死亡,警方通過查閱死者的電腦和手機牡属,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門票堵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人逮栅,你說我怎么就攤上這事悴势。” “怎么了措伐?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵特纤,是天一觀的道長。 經(jīng)常有香客問我侥加,道長捧存,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮昔穴,結(jié)果婚禮上镰官,老公的妹妹穿的比我還像新娘。我一直安慰自己吗货,他們只是感情好泳唠,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著宙搬,像睡著了一般警检。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上害淤,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天扇雕,我揣著相機與錄音,去河邊找鬼窥摄。 笑死镶奉,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的崭放。 我是一名探鬼主播哨苛,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼币砂!你這毒婦竟也來了建峭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤决摧,失蹤者是張志新(化名)和其女友劉穎亿蒸,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掌桩,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡边锁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了波岛。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片茅坛。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖则拷,靈堂內(nèi)的尸體忽然破棺而出贡蓖,到底是詐尸還是另有隱情,我是刑警寧澤煌茬,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布斥铺,位于F島的核電站,受9級特大地震影響宣旱,放射性物質(zhì)發(fā)生泄漏仅父。R本人自食惡果不足惜叛薯,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望笙纤。 院中可真熱鬧耗溜,春花似錦、人聲如沸省容。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽腥椒。三九已至阿宅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間笼蛛,已是汗流浹背洒放。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留滨砍,地道東北人往湿。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像惋戏,于是被迫代替她去往敵國和親领追。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355