算法導(dǎo)論:快速排序

快速排序基本思想

輸入代排數(shù)組——>選取基準(zhǔn)元——>執(zhí)行劃分操作——>遞歸對兩個(gè)數(shù)組進(jìn)行快速排序
1怎囚、比如這里輸入序列{72,6摔踱,57岭参,88,60包晰,42湿镀,83,73伐憾,48}
2勉痴、下面選取基準(zhǔn)元,這里選取72


選取基準(zhǔn)元

選取基準(zhǔn)元后树肃,會用另一個(gè)空間存放基準(zhǔn)元的數(shù)據(jù)蒸矛,用兩個(gè)指針分別指向數(shù)組最前端與最后端,從最后端開始比較,如果比基準(zhǔn)元72小雏掠,則放在基準(zhǔn)元前面斩祭,也就是將數(shù)據(jù)放在前端指針指的數(shù)據(jù),這里是48<72所以要放在第一個(gè)位置乡话。
3摧玫、執(zhí)行劃分操作


執(zhí)行劃分操作

再移動前端指針,依次進(jìn)行數(shù)據(jù)的改變绑青,當(dāng)前后指針指向同一個(gè)數(shù)據(jù)時(shí)诬像,就是劃分結(jié)束,將基準(zhǔn)元的數(shù)據(jù)放在指針的位置闸婴。
劃分結(jié)束

4坏挠、遞歸對兩個(gè)數(shù)組進(jìn)行快速排序
遞歸對兩個(gè)數(shù)組進(jìn)行快速排序

現(xiàn)在依據(jù)第一次的基準(zhǔn)元,將數(shù)組分為左右兩個(gè)部分邪乍,分別對兩個(gè)數(shù)組進(jìn)行快速排序降狠,基準(zhǔn)元選擇第一個(gè)數(shù)字,也就是48庇楞、83作為基準(zhǔn)元喊熟。


遞歸排序

執(zhí)行劃分后得到上圖,依次類推執(zhí)行快速排序姐刁。
劃分結(jié)束

經(jīng)過三次劃分后芥牌,得到了有序的序列。

快速排序優(yōu)化方法

選擇基準(zhǔn)的方式——固定位置

思想:取待排序列的第一個(gè)或最后一個(gè)作為基準(zhǔn)

就是我們剛才舉列子的方式聂使,這種方式在最好的情況下壁拉,時(shí)間復(fù)雜度是O(nlgn),不過在最壞情況下柏靶,也就是這個(gè)序列本身是有序的時(shí)候弃理,這個(gè)排序就會變成冒泡排序,時(shí)間復(fù)雜度為O(n2)

最壞情況

選擇基準(zhǔn)的方式——隨機(jī)選擇基準(zhǔn)

思想:取待排序列中的任意一個(gè)作為基準(zhǔn)

簡單分析:
基準(zhǔn)元的位置是隨機(jī)的屎蜓,則出現(xiàn)最壞情況的概率大大降低痘昌,最好情況依然是O(nlgn)
在整個(gè)數(shù)組數(shù)字全相等時(shí),仍然是 最壞情況炬转,時(shí)間復(fù)雜度是O(n2)

選擇基準(zhǔn)的方式——“三數(shù)取中”選取基準(zhǔn)元

三數(shù)取中

這樣可以盡可能讓劃分得到的兩個(gè)序列盡可能等長辆苔,會降低快速排序的時(shí)間復(fù)雜度。

快速排序+插入排序

原因:
對于很小和部分有序的數(shù)組扼劈,快排不如插排好

“聚key”方法

思想:在一次分割結(jié)束后驻啤,可以把與Key相等的元素聚在一起,繼續(xù)下次分割時(shí)荐吵,不用再對與key相等元素分割骑冗。

這里給出序列{1赊瞬,4,6贼涩,7巧涧,6,6遥倦,7谤绳,6,8谊迄,6}闷供,


三數(shù)取中

用三數(shù)取中的方法會選擇出基準(zhǔn)元6烟央,最后劃分出左右兩個(gè)子序列统诺。


聚key

這個(gè)方法與其他方法的不同,就是在移動指針時(shí)疑俭,如果指針的值粮呢,和基準(zhǔn)元一樣,比如這里指向6钞艇,那就會將這個(gè)數(shù)移動到兩端(哪一邊的指針指向的啄寡,就移動到哪一段)。
聚key

再將兩端的key值哩照,移動到與基準(zhǔn)相等的地方挺物,最后劃分得到左右兩個(gè)子序列。


聚key

采用這種方法飘弧,能減少迭代次數(shù)识藤,提高效率。

快排及其優(yōu)化-總結(jié)

總結(jié)

在優(yōu)化方面次伶,主要集中在選取基準(zhǔn)元和執(zhí)行劃分操作上痴昧。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市冠王,隨后出現(xiàn)的幾起案子赶撰,更是在濱河造成了極大的恐慌,老刑警劉巖柱彻,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件豪娜,死亡現(xiàn)場離奇詭異,居然都是意外死亡哟楷,警方通過查閱死者的電腦和手機(jī)侵歇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吓蘑,“玉大人惕虑,你說我怎么就攤上這事坟冲。” “怎么了溃蔫?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵健提,是天一觀的道長。 經(jīng)常有香客問我伟叛,道長私痹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任统刮,我火速辦了婚禮紊遵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘侥蒙。我一直安慰自己暗膜,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布鞭衩。 她就那樣靜靜地躺著学搜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪论衍。 梳的紋絲不亂的頭發(fā)上瑞佩,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天,我揣著相機(jī)與錄音坯台,去河邊找鬼炬丸。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蜒蕾,可吹牛的內(nèi)容都是我干的稠炬。 我是一名探鬼主播,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼滥搭,長吁一口氣:“原來是場噩夢啊……” “哼酸纲!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起瑟匆,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤闽坡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后愁溜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體疾嗅,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年冕象,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了代承。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,779評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡渐扮,死狀恐怖论悴,靈堂內(nèi)的尸體忽然破棺而出掖棉,到底是詐尸還是另有隱情,我是刑警寧澤膀估,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布幔亥,位于F島的核電站,受9級特大地震影響察纯,放射性物質(zhì)發(fā)生泄漏帕棉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一饼记、第九天 我趴在偏房一處隱蔽的房頂上張望香伴。 院中可真熱鬧,春花似錦具则、人聲如沸即纲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽崇裁。三九已至匕坯,卻和暖如春束昵,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背葛峻。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工锹雏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人术奖。 一個(gè)月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓礁遵,卻偏偏與公主長得像,于是被迫代替她去往敵國和親采记。 傳聞我的和親對象是個(gè)殘疾皇子佣耐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評論 2 354

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

  • 前言 查找和排序算法是算法的入門知識,其經(jīng)典思想可以用于很多算法當(dāng)中唧龄。因?yàn)槠鋵?shí)現(xiàn)代碼較短兼砖,應(yīng)用較常見。所以在面試中...
    寶塔山上的貓閱讀 1,086評論 1 21
  • 作者:大海里的太陽原文地址:http://www.cnblogs.com/wxisme/ 前言 查找和排序算法是算...
    IT程序獅閱讀 2,500評論 0 63
  • 概述 排序有內(nèi)部排序和外部排序讽挟,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序,而外部排序是因排序的數(shù)據(jù)很大丸冕,一次不能容納全部...
    蟻前閱讀 5,183評論 0 52
  • 面試中常用的幾個(gè)基本算法整理記錄(二) 無意中看到了面試中的 10 大排序算法總結(jié)原文地址記錄一下耽梅,方便查找。 查...
    190CM閱讀 1,759評論 1 13
  • 今天2017年10月18號胖烛,我的這一路走來眼姐,任性妄為诅迷,收斂壞脾氣壞情緒,堅(jiān)持就是勝利众旗!小時(shí)候挑著擔(dān)子兩個(gè)大鐵桶盛滿...
    大吉祥如意閱讀 173評論 0 0