golang源碼閱讀之 排序算法

之前想寫字符子串查找來著一直沒有時間

前兩天搞了個多key 的排序就看了golang的排序算法?

源碼在 sort/sort.go 文件

實現(xiàn)了兩種排序一種快速排序 為不穩(wěn)定的排序 一種是穩(wěn)定的排序

什么叫做不穩(wěn)定排序


百度百科的定義

為了實排序需要自己定義比較原則椭住,獲取長度函數(shù)等


go已經(jīng)內(nèi)部實現(xiàn)了int,float等類型的排序,不需要自己定義less等函數(shù)了

主要排序?qū)崿F(xiàn)在 quicksort 函數(shù)和stable 函數(shù) 一個是快速排序但是不穩(wěn)定的镇匀,一個是穩(wěn)定排序

在被排序?qū)ο箝L度>12 的情況下用的是先進行局部快排,在深度等于0 的時候再進行堆排序(這個時候每個堆應(yīng)該是大致有序的吧)岩馍,在長度小于12 的情況下先進行一輪步長為6 的希爾排序晋涣,在進行插入排序


用的排序算法都是我們?nèi)粘=佑|的 扮叨,有的新鮮的就是在doPivot() 這個函數(shù)選擇快排的Pivot 有點技巧 姜钳,要取得一個好的中間值坦冠,又盡量進行少次的比較,go 用的方法是 Tukey's Ninther?


關(guān)于這個?Tukey's Ninther? 有個鏈接可以看下

John Tukey's median of medians | ninther

在長度小于12 直接進行插入排序或者在快排幾輪基本有序的情況下進行插入排序哥桥,插入排序在基本有序的情況下可以達到線性的速度

穩(wěn)定排序

使用歸并算法排序? 看了個大概辙浑,后面有時間再看下?



總結(jié): golang 排序雖然用的都是我們常見的算法,但是考慮的非常多拟糕,也非常細致(比如說防止過深的遞歸了之類的)判呕,大神就是大神,各種算法的論文送滞,變種侠草,優(yōu)劣,類比都如數(shù)家珍犁嗅,感覺自己就是僅僅知道這個算法边涕,會用,會實現(xiàn)而已褂微,雖然我和大神差的很遠功蜓,但是我還是要一點一點縮短我們之間的距離,哪怕是一點宠蚂,也要進步(o(* ̄︶ ̄*)o)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末式撼,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子求厕,更是在濱河造成了極大的恐慌著隆,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件甘改,死亡現(xiàn)場離奇詭異旅东,居然都是意外死亡,警方通過查閱死者的電腦和手機十艾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門抵代,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人忘嫉,你說我怎么就攤上這事荤牍。” “怎么了庆冕?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵康吵,是天一觀的道長。 經(jīng)常有香客問我访递,道長晦嵌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮惭载,結(jié)果婚禮上旱函,老公的妹妹穿的比我還像新娘。我一直安慰自己描滔,他們只是感情好棒妨,可當(dāng)我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著含长,像睡著了一般券腔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拘泞,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天纷纫,我揣著相機與錄音,去河邊找鬼陪腌。 笑死涛酗,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的偷厦。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼燕刻,長吁一口氣:“原來是場噩夢啊……” “哼只泼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起卵洗,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤请唱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后过蹂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體十绑,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年酷勺,在試婚紗的時候發(fā)現(xiàn)自己被綠了本橙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡脆诉,死狀恐怖甚亭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情击胜,我是刑警寧澤亏狰,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站偶摔,受9級特大地震影響暇唾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一策州、第九天 我趴在偏房一處隱蔽的房頂上張望瘸味。 院中可真熱鬧,春花似錦抽活、人聲如沸硫戈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽丁逝。三九已至,卻和暖如春梭姓,著一層夾襖步出監(jiān)牢的瞬間霜幼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工誉尖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留罪既,地道東北人。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓铡恕,卻偏偏與公主長得像琢感,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子探熔,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,601評論 2 353

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

  • 一. 寫在前面 要學(xué)習(xí)算法驹针,“排序”是一個回避不了的重要話題,在分析完并查集算法和常用數(shù)據(jù)結(jié)構(gòu)之后诀艰,今天我們終于可...
    Leesper閱讀 2,531評論 0 40
  • 概述 排序有內(nèi)部排序和外部排序柬甥,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進行排序,而外部排序是因排序的數(shù)據(jù)很大其垄,一次不能容納全部...
    蟻前閱讀 5,183評論 0 52
  • 概述:排序有內(nèi)部排序和外部排序苛蒲,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進行排序,而外部排序是因排序的數(shù)據(jù)很大绿满,一次不能容納全部...
    每天刷兩次牙閱讀 3,730評論 0 15
  • 概述排序有內(nèi)部排序和外部排序臂外,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進行排序,而外部排序是因排序的數(shù)據(jù)很大喇颁,一次不能容納全部的...
    Luc_閱讀 2,270評論 0 35
  • 概述 排序有內(nèi)部排序和外部排序寄月,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進行排序,而外部排序是因排序的數(shù)據(jù)很大无牵,一次不能容納全部...
    閑云清煙閱讀 757評論 0 6