Stanford Algorithm 1.5 - 1.7 記錄

Merge Sort

該課程前面幾節(jié)課作為入門, 所以會介紹一些算法, 但后面會有更扎實瑟匆、底層諸如復雜度分析等內(nèi)容.

按講者說法, 這種算法還是比較實際引用廣泛的, 我后來稍微google了一下, 說這種算法最壞最好情況都是一樣的時間復雜度.

思想很簡單, 屬于Divide and Conquer , 就是遞歸的把它二分打散, 再用O(N)的函數(shù)把它們merge起來. 下面的代碼是不去重的, 即有重復數(shù)字仍然包含在內(nèi).

def merge_sorted_lists(a, b):
    res = []
    # init indices for a, b
    i = 0
    j = 0
    while i < len(a) and j < len(b):
        if a[i] < b[j]:
            res.append(a[i])
            i = i + 1
        else:
            res.append(b[j])
            j = j + 1
    if i < len(a):
        res = res + a[i:]
    else:
        res = res + b[j:]
    return res

def merge_sort(l):
    # THIS IS for exit!!!
    if len(l) <= 1:
        return l
    a = l[:int(len(l)/2)]
    b = l[int(len(l)/2):]
    left = merge_sort(a)
    right = merge_sort(b)
    return merge_sorted_lists(left, right)
    
if __name__ == '__main__':
    l = [4,5,7,9,7,5,1,0,7,-2,3,-99,6]
    print(merge_sort(l))

在度量其復雜度時, 講者采用的是recursive tree, 其實就是笨辦法, 把遞歸過程全部列出來, 計算每一層級需要的代價. 在第j (j=0,1,2,...,logN)層, 有2^j子問題(就是需要merge的)宴合, 每個子問題的size是(至多)需要6(N/(2^j))的代價(代碼行數(shù)). 因此, 不管在哪一層, 代價都是6N, 所以最多就是6N(1+logN).

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市俗他,隨后出現(xiàn)的幾起案子诫尽,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件箩艺,死亡現(xiàn)場離奇詭異,居然都是意外死亡宪萄,警方通過查閱死者的電腦和手機艺谆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拜英,“玉大人静汤,你說我怎么就攤上這事【有祝” “怎么了虫给?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長侠碧。 經(jīng)常有香客問我抹估,道長,這世上最難降的妖魔是什么弄兜? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任药蜻,我火速辦了婚禮瓷式,結果婚禮上,老公的妹妹穿的比我還像新娘语泽。我一直安慰自己贸典,他們只是感情好,可當我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布踱卵。 她就那樣靜靜地躺著廊驼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪惋砂。 梳的紋絲不亂的頭發(fā)上妒挎,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天,我揣著相機與錄音班利,去河邊找鬼饥漫。 笑死榨呆,一個胖子當著我的面吹牛罗标,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播积蜻,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼闯割,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了竿拆?” 一聲冷哼從身側響起坷剧,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤魄衅,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體关带,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年魁亦,在試婚紗的時候發(fā)現(xiàn)自己被綠了虚吟。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡怠肋,死狀恐怖敬鬓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情笙各,我是刑警寧澤钉答,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站杈抢,受9級特大地震影響数尿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜惶楼,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一右蹦、第九天 我趴在偏房一處隱蔽的房頂上張望虏缸。 院中可真熱鬧,春花似錦嫩实、人聲如沸刽辙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宰缤。三九已至,卻和暖如春晃洒,著一層夾襖步出監(jiān)牢的瞬間慨灭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工球及, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留氧骤,地道東北人。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓吃引,卻偏偏與公主長得像筹陵,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子镊尺,可洞房花燭夜當晚...
    茶點故事閱讀 44,652評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Chapter 2 插入排序 線性查找 選擇算法 歸并排序算法 二分查找算法 冒泡排序 插入排序 循環(huán)不...
    只是無情緒閱讀 1,454評論 0 1
  • 他是一名山上的釀酒翁朦佩,結廬而居,偶爾拎幾壺上好的燒刀子下山庐氮,總有一個少年等著语稠,同他坐在橋邊垂竿而漁,一邊喝酒弄砍,一邊...
    夏梧桐閱讀 298評論 1 0
  • public classMainActivityextendsAppCompatActivityimplement...
    煙雨冰封閱讀 3,032評論 0 0
  • 《賣輪子》是一本幽默的故事書仙畦,同時又是一本打破舊思維的書,它沒有去生硬的講解營銷是什么音婶,而是通過一個賣輪子的故事慨畸,...
    陸小米101閱讀 496評論 0 1
  • 我是個好孩紙
    Oncexagain閱讀 204評論 0 0