說說算法那些事-插入排序

插入排序的基本操作就是將一個數(shù)據(jù)插入到已經(jīng)排好序的有序數(shù)據(jù)中摊册,從而得到一個新的、個數(shù)加一的有序數(shù)據(jù)颊艳。插入排序方法分直接插入排序和折半插入排序兩種茅特。查看完整代碼

一、直接插入排序

1棋枕、直接插入排序是一種簡單的插入排序法白修,其基本思想是:把待排序的元素按其元素值的大小逐個插入到一個已經(jīng)排好序的有序序列中,直到所有的記錄插入完為止重斑,得到一個新的有序序列

2兵睛、算法步驟:

(1)、從待排序的第二個元素開始窥浪,向下掃描列表卤恳,比較這個目標(biāo)值target與arr[i-1]、arr[i-2]的大小寒矿,依次類推突琳。如果target的值小于或等于每一個元素值,那么每個元素都會向右滑動一個位置符相,一旦確定了正確位置j拆融,目標(biāo)值target(即原始的arr[i])就會被復(fù)制到這個位置蠢琳。

3、實例圖解:


4镜豹、算法分析:

時間復(fù)雜度:當(dāng)元素初始化就是正序排列的傲须,時間復(fù)雜度為O(N),當(dāng)元素初始化是逆序的趟脂,時間復(fù)雜度為O(N^2),所以平均時間復(fù)雜度為O(N^2)

空間復(fù)雜度:在直接插入排序中只使用了i,j,temp這3個輔助元素泰讽,與問題規(guī)模無關(guān),所以空間復(fù)雜度為O(1).

穩(wěn)定性:在整個排序結(jié)束后昔期,即使有相同元素它們的相對位置也沒有發(fā)生變化已卸,所以直接插入排序是一種穩(wěn)定排序。

二硼一、折半插入排序

1累澡、折半插入排序的基本思想與直接插入排序一樣,在插入第i(i≥1)個元素時般贼,前面i?1個元素已經(jīng)排好序愧哟。區(qū)別在于尋找插入位置的方法不同,折半插入排序是采用折半查找法來尋找插入位置的哼蛆。

2蕊梧、算法步驟:

(1)計算 0 ~ i-1 的中間點,用 temp臨時變量元素與中間值進(jìn)行比較腮介,如果temp元素大肥矢,說明要插入的這個元素應(yīng)該在中間值和temp對應(yīng)的i之間,反之萤厅,就是在i到中間值的位置橄抹,這樣很簡單的完成了折半;

(2)在相應(yīng)的半個范圍里面找插入的位置時惕味,不斷的用(1)步驟縮小范圍楼誓,不停的折半,從而快速的確定出第 i 個元素要插在什么地方名挥;

(3)確定位置之后疟羹,將整個序列后移,并將元素插入到相應(yīng)位置禀倔。

3榄融、算法分析:

時間復(fù)雜度:折半插入排序適合記錄數(shù)較多的場景,與直接插入排序相比救湖,折半插入排序在尋找插入位置上面所花的時間大大減少愧杯,但是折半插入排序在記錄移動次數(shù)方面和直接插入排序是一樣的,所以其時間復(fù)雜度為O(N^2)鞋既。其次力九,折半插入排序的記錄比較次數(shù)與初始序列無關(guān)耍铜。因為每趟排序折半尋找插入位置時,折半次數(shù)是一定的跌前,折半一次就要比較一次棕兼,所以比較次數(shù)也是一定的。

空間復(fù)雜度:同直接插入排序一樣抵乓,為O(1)伴挚。

穩(wěn)定性:折半插入排序是一種穩(wěn)定的排序算法。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末灾炭,一起剝皮案震驚了整個濱河市茎芋,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌咆贬,老刑警劉巖败徊,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件帚呼,死亡現(xiàn)場離奇詭異掏缎,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)煤杀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門眷蜈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人沈自,你說我怎么就攤上這事酌儒。” “怎么了枯途?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵忌怎,是天一觀的道長。 經(jīng)常有香客問我酪夷,道長榴啸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任晚岭,我火速辦了婚禮鸥印,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘坦报。我一直安慰自己库说,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布片择。 她就那樣靜靜地躺著潜的,像睡著了一般。 火紅的嫁衣襯著肌膚如雪字管。 梳的紋絲不亂的頭發(fā)上啰挪,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天疏咐,我揣著相機(jī)與錄音,去河邊找鬼脐供。 笑死浑塞,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的政己。 我是一名探鬼主播酌壕,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼歇由!你這毒婦竟也來了卵牍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤沦泌,失蹤者是張志新(化名)和其女友劉穎糊昙,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谢谦,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡释牺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了回挽。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片没咙。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖千劈,靈堂內(nèi)的尸體忽然破棺而出祭刚,到底是詐尸還是另有隱情,我是刑警寧澤墙牌,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布涡驮,位于F島的核電站,受9級特大地震影響喜滨,放射性物質(zhì)發(fā)生泄漏捉捅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一鸿市、第九天 我趴在偏房一處隱蔽的房頂上張望锯梁。 院中可真熱鬧,春花似錦焰情、人聲如沸陌凳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽合敦。三九已至,卻和暖如春验游,著一層夾襖步出監(jiān)牢的瞬間充岛,已是汗流浹背保檐。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留崔梗,地道東北人夜只。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像蒜魄,于是被迫代替她去往敵國和親扔亥。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,843評論 2 354

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

  • 總結(jié)一下常見的排序算法谈为。 排序分內(nèi)排序和外排序旅挤。內(nèi)排序:指在排序期間數(shù)據(jù)對象全部存放在內(nèi)存的排序。外排序:指在排序...
    jiangliang閱讀 1,342評論 0 1
  • 概述:排序有內(nèi)部排序和外部排序伞鲫,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序粘茄,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部...
    每天刷兩次牙閱讀 3,730評論 0 15
  • 概述 排序有內(nèi)部排序和外部排序秕脓,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序柒瓣,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部...
    蟻前閱讀 5,183評論 0 52
  • 用隨手記不過才18天撒会,但是這個軟件卻給我?guī)砹巳碌南M體驗和認(rèn)識嘹朗。 原來不記賬的時候师妙,看見什么買什么诵肛,甚至有...
    藍(lán)霧閱讀 318評論 0 0
  • 暫時怔檩,你還需要忍受一下 在可以忍受的范圍之內(nèi) 或者剛好超出一點,這沒什么 就像可以承受海鹽蓄诽,可以承受燈塔的遙遠(yuǎn) 親...
    Kellen_Ro閱讀 387評論 0 3