基礎(chǔ)排序算法 01 - 插入排序

算法概述

簡(jiǎn)單地說(shuō),插入排序就是將待排序列中未排序的元素插入到前面已經(jīng)排序好的子序列當(dāng)中的過(guò)程,直到最后一個(gè)元素萌抵。
舉個(gè)例子编整,對(duì)數(shù)組{9,3,7,2,66,22}進(jìn)行插入排序的過(guò)程可以分為以下幾步:
1舔稀,我們將當(dāng)前的有序子序列稱(chēng)為A,初始時(shí)A只有一個(gè)元素 9
2掌测,從A后面開(kāi)始内贮,將元素插入到A中合適的位置,使A仍然有序汞斧,同時(shí)A的大小加1
3夜郁,重復(fù)步驟2,直到最后一個(gè)元素

步驟2插入的過(guò)程:
因?yàn)锳已經(jīng)有序粘勒,所以將某個(gè)元素e插入A竞端,只要從A的末尾開(kāi)始掃描,假設(shè)當(dāng)前掃描到的元素為f庙睡,如果e比f(wàn)小事富,就將f后移一位(相當(dāng)于將e的位置騰出來(lái)了),如果e不比f(wàn)小乘陪,則此次掃描完成统台,最后將e放在最后掃描終止的位置上。

下面的圖片較為形象地表達(dá)了插入排序的過(guò)程:


實(shí)現(xiàn)代碼 (Java)

public void insertSort(int[] input) {
        int i, j, tmp;
        for (i = 1; i < input.length; i++) {
            tmp = input[i];
            for (j = i; j > 0 && tmp < input[j - 1]; j--) {
                input[j] = input[j - 1];
            }
            input[j] = tmp;
         }
}

復(fù)雜度

插入排序存在最好情況和最壞情況啡邑。最好情況就是贱勃,序列已經(jīng)有序了,在這種情況下谤逼,需要進(jìn)行的比較操作為 (n-1)次贵扰,最壞的情況是序列是反序的,此時(shí)需要進(jìn)行的比較操作為n*(n-1)/2次流部,插入排序的平均時(shí)間復(fù)雜度為O(n2)拔鹰。由于不需要額外的空間,插入排序的空間復(fù)雜度為O(1)贵涵。

適用場(chǎng)景

插入排序不適合數(shù)據(jù)量比較大的排序應(yīng)用列肢。但是,如果需要排序的數(shù)據(jù)量很小宾茂,或者若已知輸入元素大致上按照順序排列瓷马,那么插入排序還是一個(gè)不錯(cuò)的選擇。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末跨晴,一起剝皮案震驚了整個(gè)濱河市欧聘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌端盆,老刑警劉巖怀骤,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件费封,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡蒋伦,警方通過(guò)查閱死者的電腦和手機(jī)弓摘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)痕届,“玉大人韧献,你說(shuō)我怎么就攤上這事⊙薪校” “怎么了锤窑?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)嚷炉。 經(jīng)常有香客問(wèn)我渊啰,道長(zhǎng),這世上最難降的妖魔是什么申屹? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任绘证,我火速辦了婚禮,結(jié)果婚禮上独柑,老公的妹妹穿的比我還像新娘。我一直安慰自己私植,他們只是感情好忌栅,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著曲稼,像睡著了一般索绪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上贫悄,一...
    開(kāi)封第一講書(shū)人閱讀 51,292評(píng)論 1 301
  • 那天瑞驱,我揣著相機(jī)與錄音,去河邊找鬼窄坦。 笑死唤反,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鸭津。 我是一名探鬼主播彤侍,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼逆趋!你這毒婦竟也來(lái)了盏阶?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤闻书,失蹤者是張志新(化名)和其女友劉穎名斟,沒(méi)想到半個(gè)月后脑慧,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡砰盐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年闷袒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片楞卡。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡霜运,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蒋腮,到底是詐尸還是另有隱情淘捡,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布池摧,位于F島的核電站焦除,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏作彤。R本人自食惡果不足惜膘魄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望竭讳。 院中可真熱鬧创葡,春花似錦、人聲如沸绢慢。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)胰舆。三九已至骚露,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缚窿,已是汗流浹背棘幸。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留倦零,地道東北人误续。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像扫茅,于是被迫代替她去往敵國(guó)和親女嘲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

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