各個排序算法的時間復(fù)雜度和穩(wěn)定性,快排的原理

//聯(lián)系人:石虎?QQ:1224614774?昵稱:嗡嘛呢叭咪哄

?????????? QQ群:807236138 ?群稱:iOS 技術(shù)交流學(xué)習(xí)群

排序圖表:

一词身、插入排序

  每次將一個待排序的數(shù)據(jù)练湿,跟前面已經(jīng)有序的序列的數(shù)字一一比較找到自己合適的位置,插入到序列中涌庭,直到全部數(shù)據(jù)插入完成芥被。

二、希爾排序

先將整個待排元素序列分割成若干個子序列(由相隔某個“增量”的元素組成的)分別進(jìn)行直接插入排序坐榆,然后依次縮減增量再進(jìn)行排序拴魄,待整個序列中的元素基本有序(增量足夠小)時席镀,再對全體元素進(jìn)行一次直接插入排序匹中。由于希爾排序是對相隔若干距離的數(shù)據(jù)進(jìn)行直接插入排序,因此可以形象的稱希爾排序為“跳著插”

三愉昆、冒泡排序

? 通過交換使相鄰的兩個數(shù)變成小數(shù)在前大數(shù)在后职员,這樣每次遍歷后,最大的數(shù)就“沉”到最后面了跛溉。重復(fù)N次即可以使數(shù)組有序。


冒泡排序改進(jìn)1:在某次遍歷中如果沒有數(shù)據(jù)交換扮授,說明整個數(shù)組已經(jīng)有序芳室。因此通過設(shè)置標(biāo)志位來記錄此次遍歷有無數(shù)據(jù)交換就可以判斷是否要繼續(xù)循環(huán)。


冒泡排序改進(jìn)2:記錄某次遍歷時最后發(fā)生數(shù)據(jù)交換的位置刹勃,這個位置之后的數(shù)據(jù)顯然已經(jīng)有序了堪侯。因此通過記錄最后發(fā)生數(shù)據(jù)交換的位置就可以確定下次循環(huán)的范圍了。

四荔仁、快速排序

? “挖坑填數(shù)+分治法”伍宦,首先令i =L; j = R; 將a[i]挖出形成第一個坑,稱a[i]為基準(zhǔn)數(shù)乏梁。然后j--由后向前找比基準(zhǔn)數(shù)小的數(shù)次洼,找到后挖出此數(shù)填入前一個坑a[i]中,再i++由前向后找比基準(zhǔn)數(shù)大的數(shù)遇骑,找到后也挖出此數(shù)填到前一個坑a[j]中卖毁。

重復(fù)進(jìn)行這種“挖坑填數(shù)”直到i==j。再將基準(zhǔn)數(shù)填入a[i]中落萎,這樣i之前的數(shù)都比基準(zhǔn)數(shù)小亥啦,i之后的數(shù)都比基準(zhǔn)數(shù)大炭剪。因此將數(shù)組分成二部分再分別重復(fù)上述步驟就完成了排序。

五翔脱、選擇排序

?? 數(shù)組分成有序區(qū)和無序區(qū)奴拦,初始時整個數(shù)組都是無序區(qū),然后每次從無序區(qū)選一個最小的元素直接放到有序區(qū)的最后届吁,直到整個數(shù)組變有序區(qū)眷细。

六、堆排序

? ? ?圖:

?? 堆的插入就是——每次插入都是將新數(shù)據(jù)放在數(shù)組最后抑堡,而從這個新數(shù)據(jù)的父結(jié)點到根結(jié)點必定是一個有序的數(shù)列按摘,因此只要將這個新數(shù)據(jù)插入到這個有序數(shù)列中即可。

?? 堆的刪除就是——堆的刪除就是將最后一個數(shù)據(jù)的值賦給根結(jié)點濒旦,然后再從根結(jié)點開始進(jìn)行一次從上向下的調(diào)整株旷。調(diào)整時先在左右兒子結(jié)點中找最小的,如果父結(jié)點比這個最小的子結(jié)點還小說明不需要調(diào)整了尔邓,反之將父結(jié)點和它交換后再考慮后面的結(jié)點晾剖。相當(dāng)于從根結(jié)點開始將一個數(shù)據(jù)在有序數(shù)列中進(jìn)行“下沉”。

?? 因此梯嗽,堆的插入和刪除非常類似直接插入排序齿尽,只不是在二叉樹上進(jìn)行插入過程。所以可以將堆排序形容為“樹上插”

七灯节、歸并排序

?? 歸并排序主要分為兩步:分?jǐn)?shù)列(divide)循头,每次把數(shù)列一分為二,然后分到只有兩個元素的小數(shù)列炎疆;合數(shù)列(Merge)卡骂,合并兩個已經(jīng)內(nèi)部有序的子序列,直至所有數(shù)字有序形入。用遞歸可以實現(xiàn)全跨。

八、基數(shù)排序(桶排序)


? ? 基數(shù)排序亿遂,第一步根據(jù)數(shù)字的個位分配到每個桶里浓若,在桶內(nèi)部排序,然后將數(shù)字再輸出(串起來)蛇数;然后根據(jù)十位分桶挪钓,繼續(xù)排序,再串起來苞慢。直至所有位被比較完诵原,所有數(shù)字已經(jīng)有序。

謝謝!!!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市绍赛,隨后出現(xiàn)的幾起案子蔓纠,更是在濱河造成了極大的恐慌,老刑警劉巖吗蚌,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腿倚,死亡現(xiàn)場離奇詭異,居然都是意外死亡蚯妇,警方通過查閱死者的電腦和手機敷燎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來箩言,“玉大人硬贯,你說我怎么就攤上這事≡墒眨” “怎么了饭豹?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長务漩。 經(jīng)常有香客問我拄衰,道長,這世上最難降的妖魔是什么饵骨? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任翘悉,我火速辦了婚禮,結(jié)果婚禮上居触,老公的妹妹穿的比我還像新娘妖混。我一直安慰自己,他們只是感情好轮洋,可當(dāng)我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布源葫。 她就那樣靜靜地躺著,像睡著了一般砖瞧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上嚷狞,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天块促,我揣著相機與錄音,去河邊找鬼床未。 笑死竭翠,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的薇搁。 我是一名探鬼主播斋扰,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了传货?” 一聲冷哼從身側(cè)響起屎鳍,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎问裕,沒想到半個月后逮壁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡粮宛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年窥淆,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片巍杈。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡忧饭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出筷畦,到底是詐尸還是另有隱情词裤,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布汁咏,位于F島的核電站亚斋,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏攘滩。R本人自食惡果不足惜帅刊,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望漂问。 院中可真熱鬧赖瞒,春花似錦、人聲如沸蚤假。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽磷仰。三九已至袍嬉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間灶平,已是汗流浹背伺通。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留逢享,地道東北人罐监。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像瞒爬,于是被迫代替她去往敵國和親弓柱。 傳聞我的和親對象是個殘疾皇子沟堡,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,486評論 2 348