經(jīng)典排序算法系列8----7大排序算法總結(jié)篇

首先回顧下各種排序的主要思路:
一.冒泡排序
冒泡排序主要思路是:
通過交換使相鄰的兩個數(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ù)據(jù)卢鹦,插入到前面已經(jīng)排好序的序列之中,直到全部數(shù)據(jù)插入完成劝堪。

三. 直接選擇排序
直接選擇排序主要思路是:
數(shù)組分成有序區(qū)和無序區(qū)冀自,初始時整個數(shù)組都是無序區(qū),然后每次從無序區(qū)選一個最小的元素直接放到有序區(qū)的最后秒啦,直到整個數(shù)組變有序區(qū)熬粗。

上面這三種排序都是非常簡單的,下面這四種排序略有難度余境,希望讀者能多多實踐以加深理解驻呐。

四. 希爾排序
希爾排序主要思路是:
先將整個待排元素序列分割成若干個子序列(由相隔某個“增量”的元素組成的)分別進(jìn)行直接插入排序,然后依次縮減增量再進(jìn)行排序芳来,待整個序列中的元素基本有序(增量足夠泻)時,再對全體元素進(jìn)行一次直接插入排序即舌。由于希爾排序是對相隔若干距離的數(shù)據(jù)進(jìn)行直接插入排序答渔,因此可以形象的稱希爾排序為“跳著插

五. 歸并排序
歸并排序主要思路是:
當(dāng)一個數(shù)組左邊有序,右邊也有序侥涵,那合并這兩個有序數(shù)組就完成了排序。如何讓左右兩邊有序了宋雏?用遞歸芜飘!這樣遞歸下去,合并上來就是歸并排序磨总。

六. 快速排序
快速選擇排序主要思路是:
“挖坑填數(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ù)據(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)行插入過程试溯。所以可以將堆排序形容為“樹上插

再用一張圖表示下這七種常用的排序方法的關(guān)系蔑滓。

經(jīng)典排序算法系列8----7大排序算法總結(jié)篇

推薦閱讀:
經(jīng)典排序算法系列1----冒泡排序的實現(xiàn)
經(jīng)典排序算法系列2----插入排序的實現(xiàn)
經(jīng)典排序算法系列3----直接選擇排序及交換二個數(shù)據(jù)的正確實現(xiàn)
經(jīng)典排序算法系列4----希爾排序的實現(xiàn)
經(jīng)典排序算法系列5----歸并排序
經(jīng)典排序算法系列6----快速排序
經(jīng)典排序算法系列7----堆與堆排序
經(jīng)典排序算法系列8----7大排序算法總結(jié)篇
經(jīng)典排序算法系列9----分配排序(桶排序和基數(shù)排序)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市遇绞,隨后出現(xiàn)的幾起案子键袱,更是在濱河造成了極大的恐慌,老刑警劉巖摹闽,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蹄咖,死亡現(xiàn)場離奇詭異,居然都是意外死亡付鹿,警方通過查閱死者的電腦和手機(jī)澜汤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來舵匾,“玉大人俊抵,你說我怎么就攤上這事∽荩” “怎么了徽诲?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我谎替,道長偷溺,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任钱贯,我火速辦了婚禮挫掏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘喷舀。我一直安慰自己砍濒,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布硫麻。 她就那樣靜靜地躺著爸邢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拿愧。 梳的紋絲不亂的頭發(fā)上杠河,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機(jī)與錄音浇辜,去河邊找鬼券敌。 笑死,一個胖子當(dāng)著我的面吹牛柳洋,可吹牛的內(nèi)容都是我干的待诅。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼熊镣,長吁一口氣:“原來是場噩夢啊……” “哼卑雁!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起绪囱,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤测蹲,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后鬼吵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扣甲,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年齿椅,在試婚紗的時候發(fā)現(xiàn)自己被綠了琉挖。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡涣脚,死狀恐怖示辈,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情涩澡,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站妙同,受9級特大地震影響射富,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜粥帚,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一胰耗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧芒涡,春花似錦柴灯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至旱幼,卻和暖如春查描,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背柏卤。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工冬三, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人缘缚。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓勾笆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親桥滨。 傳聞我的和親對象是個殘疾皇子窝爪,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,685評論 2 360

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

  • 概述:排序有內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序该园,而外部排序是因排序的數(shù)據(jù)很大酸舍,一次不能容納全部...
    每天刷兩次牙閱讀 3,733評論 0 15
  • 概述 排序有內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序里初,而外部排序是因排序的數(shù)據(jù)很大啃勉,一次不能容納全部...
    蟻前閱讀 5,191評論 0 52
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 將一個記錄插入到已排序好...
    依依玖玥閱讀 1,262評論 0 2
  • 概述排序有內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序双妨,而外部排序是因排序的數(shù)據(jù)很大淮阐,一次不能容納全部的...
    Luc_閱讀 2,278評論 0 35
  • 感恩冥想 1、感恩這幾天下雨刁品,天氣這么涼爽泣特,讓家里沒有空調(diào)的我不那么熱 2、感恩陽臺上的花長得那么好挑随,讓我看到了旺...
    欒宜閱讀 148評論 0 0