排序算法之插入排序

插入排序是一種簡(jiǎn)單直觀的排序算法堪置。它的工作原理非常類似于我們抓撲克牌沐绒。

對(duì)于未排序數(shù)據(jù)(右手抓到的牌)犁柜,在已排序序列(左手已經(jīng)排好序的手牌)中從后向前掃描,找到相應(yīng)位置并插入圾笨。

插入排序在實(shí)現(xiàn)上教馆,通常采用in-place排序(即只需用到O(1)的額外空間的排序),因而在從后向前掃描過程中擂达,需要反復(fù)把已排序元素逐步向后挪位土铺,為最新元素提供插入空間。

插入排序不適合對(duì)于數(shù)據(jù)量比較大的排序應(yīng)用板鬓。但是悲敷,如果需要排序的數(shù)據(jù)量很小,比如量級(jí)小于千俭令,那么插入排序還是一個(gè)不錯(cuò)的選擇后德。 插入排序在工業(yè)級(jí)庫(kù)中也有著廣泛的應(yīng)用,在STL的sort算法和stdlib的qsort算法中抄腔,都將插入排序作為快速排序的補(bǔ)充瓢湃,用于少量元素的排序(通常為8個(gè)或以下)

具體算法描述如下:

從第一個(gè)元素開始,該元素可以認(rèn)為已經(jīng)被排序

取出下一個(gè)元素赫蛇,在已經(jīng)排序的元素序列中從后向前掃描

如果該元素(已排序)大于新元素绵患,將該元素移到下一位置

重復(fù)步驟3,直到找到已排序的元素小于或者等于新元素的位置

將新元素插入到該位置后

重復(fù)步驟2~5

// 分類 ------------- 內(nèi)部比較排序

// 數(shù)據(jù)結(jié)構(gòu) ---------- 數(shù)組

// 最差時(shí)間復(fù)雜度 ---- 最壞情況為輸入序列是降序排列的,此時(shí)時(shí)間復(fù)雜度O(n^2)

// 最優(yōu)時(shí)間復(fù)雜度 ---- 最好情況為輸入序列是升序排列的,此時(shí)時(shí)間復(fù)雜度O(n)

// 平均時(shí)間復(fù)雜度 ---- O(n^2)

// 所需輔助空間 ------ O(1)

// 穩(wěn)定性 ------------ 穩(wěn)定

#include

usingnamespacestd;

intmain()

{

intA[] = {6,5,3,1,8,7,2,4};//從小到大插入排序

intn =sizeof(A) /sizeof(int);

inti, j, get;

for(i =1; i < n; i++)//類似抓撲克牌排序

{

get = A[i];//右手抓到一張撲克牌

j = i -1;//拿在左手上的牌總是排序好的

while(j >=0&& A[j] > get)//將抓到的牌與手牌從右向左進(jìn)行比較

{

A[j +1] = A[j];//如果該手牌比抓到的牌大,就將其右移

j--;

}

A[j +1] = get;//直到該手牌比抓到的牌小(或二者相等),將抓到的牌插入到該手牌右邊(相等元素的相對(duì)次序未變,所以插入排序是穩(wěn)定的)

}

printf("插入排序結(jié)果:");

for(i =0; i < n; i++)

{

printf("%d ", A[i]);

}

printf("\n");

return0;

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末悟耘,一起剝皮案震驚了整個(gè)濱河市落蝙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌暂幼,老刑警劉巖掘殴,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異粟誓,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)起意,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門鹰服,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事悲酷√撞耍” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵设易,是天一觀的道長(zhǎng)逗柴。 經(jīng)常有香客問我,道長(zhǎng)顿肺,這世上最難降的妖魔是什么戏溺? 我笑而不...
    開封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮屠尊,結(jié)果婚禮上旷祸,老公的妹妹穿的比我還像新娘。我一直安慰自己讼昆,他們只是感情好托享,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著浸赫,像睡著了一般闰围。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上既峡,一...
    開封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天羡榴,我揣著相機(jī)與錄音,去河邊找鬼涧狮。 笑死炕矮,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的者冤。 我是一名探鬼主播肤视,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼涉枫!你這毒婦竟也來了邢滑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤愿汰,失蹤者是張志新(化名)和其女友劉穎困后,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體衬廷,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡摇予,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了吗跋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侧戴。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡宁昭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出酗宋,到底是詐尸還是另有隱情积仗,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布蜕猫,位于F島的核電站寂曹,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏回右。R本人自食惡果不足惜隆圆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望楣黍。 院中可真熱鬧匾灶,春花似錦、人聲如沸租漂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哩治。三九已至秃踩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間业筏,已是汗流浹背憔杨。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蒜胖,地道東北人消别。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像台谢,于是被迫代替她去往敵國(guó)和親寻狂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

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

  • 概述 排序有內(nèi)部排序和外部排序朋沮,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序蛇券,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部...
    蟻前閱讀 5,170評(píng)論 0 52
  • 插入排序和冒泡排序都比較簡(jiǎn)單樊拓,但是時(shí)間復(fù)雜度有點(diǎn)高纠亚。 首先是冒泡排序,是通過相鄰的兩個(gè)數(shù)字進(jìn)行比較筋夏,每一趟之后蒂胞,待...
    哇哇哇one閱讀 474評(píng)論 0 1
  • 插入排序 直接插入排序的基本思想:每次將一個(gè)待排序的記錄啤誊,按其keyword的大小插入到前面已經(jīng)排好的子序列中的適...
    Sunrain16閱讀 1,139評(píng)論 0 3
  • 總結(jié)一下常見的排序算法岳瞭。 排序分內(nèi)排序和外排序。內(nèi)排序:指在排序期間數(shù)據(jù)對(duì)象全部存放在內(nèi)存的排序蚊锹。外排序:指在排序...
    jiangliang閱讀 1,334評(píng)論 0 1
  • 1、工具的github地址https://github.com/tbruyelle/RxPermissions 2...
    水大云霄閱讀 1,407評(píng)論 0 3