iOS算法之插入排序

插入排序就是每一步都將一個(gè)待排數(shù)據(jù)按其大小插入到已經(jīng)排序的數(shù)據(jù)中的適當(dāng)位置唱蒸,直到全部插入完畢邦鲫。 插入排序方法分直接插入排序和折半插入排序兩種。

詳細(xì)代碼請(qǐng)參考Algorithm。參考代碼比文字好理解庆捺。

時(shí)間復(fù)雜度與空間復(fù)雜度

時(shí)間復(fù)雜度:O(n^2)
空間復(fù)雜度:O(1)

最少比較次數(shù):(已排序的數(shù)組)n-1次
最多比較次數(shù):(降序的數(shù)組)n(n-1)/2次

數(shù)組在已排序或者是“近似排序”時(shí)古今,插入排序效率的最好情況運(yùn)行時(shí)間為O(n);插入排序最壞情況運(yùn)行時(shí)間和平均情況運(yùn)行時(shí)間都為O(n^2) 滔以。

插入排序不適合對(duì)大量數(shù)據(jù)排序捉腥,適合對(duì)接近排序的數(shù)據(jù)排序。插入排序是穩(wěn)定排序你画。通常抵碟,插入排序呈現(xiàn)出二次排序算法中的最佳性能。對(duì)于具有較少元素(如n<=15)的列表來(lái)說(shuō)坏匪,二次算法十分有效拟逮。在列表已被排序時(shí),插入排序是線性算法O(n)适滓。在列表“近似排序”時(shí)敦迄,插入排序仍然是線性算法。在列表的許多元素已位于正確的位置上時(shí)凭迹,就會(huì)出現(xiàn)“近似排序”的條件罚屋。

算法描述

假定n是數(shù)組的長(zhǎng)度,首先假設(shè)第一個(gè)元素被放置在正確的位置上嗅绸,這樣僅需從1到n-1范圍內(nèi)對(duì)剩余元素進(jìn)行排序脾猛。對(duì)于每次遍歷,從0到i-1范圍內(nèi)的元素已經(jīng)被排好序鱼鸠,每次遍歷的任務(wù)是:通過(guò)掃描前面已排序的子列表猛拴,將位置i處的元素定位到從0到i的子列表之內(nèi)的正確的位置上。

將arr[i]復(fù)制為一個(gè)名為target的臨時(shí)元素瞧柔。向下掃描列表漆弄,比較這個(gè)目標(biāo)值target與arr[i-1]、arr[i-2]的大小造锅,依次類推。這個(gè)比較過(guò)程在小于或等于目標(biāo)值的第一個(gè)元素(arr[j])處停止廉邑,或者在列表開(kāi)始處停止(j=0)哥蔚。在arr[i]小于前面任何已排序元素時(shí),后一個(gè)條件(j=0)為真蛛蒙,因此糙箍,這個(gè)元素會(huì)占用新排序子列表的第一個(gè)位置。在掃描期間牵祟,大于目標(biāo)值target的每個(gè)元素都會(huì)向右滑動(dòng)一個(gè)位置(arr[j]=arr[j-1])深夯。一旦確定了正確位置j,目標(biāo)值target(即原始的arr[i])就會(huì)被復(fù)制到這個(gè)位置。與選擇排序不同的是咕晋,插入排序?qū)?shù)據(jù)向右滑動(dòng)雹拄,并且不會(huì)執(zhí)行交換。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末掌呜,一起剝皮案震驚了整個(gè)濱河市滓玖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌质蕉,老刑警劉巖势篡,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異模暗,居然都是意外死亡禁悠,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門兑宇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)绷蹲,“玉大人,你說(shuō)我怎么就攤上這事顾孽∽8郑” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵若厚,是天一觀的道長(zhǎng)拦英。 經(jīng)常有香客問(wèn)我,道長(zhǎng)测秸,這世上最難降的妖魔是什么疤估? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮霎冯,結(jié)果婚禮上铃拇,老公的妹妹穿的比我還像新娘。我一直安慰自己沈撞,他們只是感情好慷荔,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著缠俺,像睡著了一般显晶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上壹士,一...
    開(kāi)封第一講書(shū)人閱讀 49,741評(píng)論 1 289
  • 那天磷雇,我揣著相機(jī)與錄音,去河邊找鬼躏救。 笑死唯笙,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播崩掘,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼七嫌,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了呢堰?” 一聲冷哼從身側(cè)響起抄瑟,我...
    開(kāi)封第一講書(shū)人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎枉疼,沒(méi)想到半個(gè)月后皮假,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡骂维,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年惹资,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片航闺。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡褪测,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出潦刃,到底是詐尸還是另有隱情侮措,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布乖杠,位于F島的核電站分扎,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏胧洒。R本人自食惡果不足惜畏吓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望卫漫。 院中可真熱鬧菲饼,春花似錦、人聲如沸列赎。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)粥谬。三九已至肛根,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間漏策,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工臼氨, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留掺喻,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像感耙,于是被迫代替她去往敵國(guó)和親褂乍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

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

  • 排序算法說(shuō)明 (1)排序的定義:對(duì)一序列對(duì)象根據(jù)某個(gè)關(guān)鍵字進(jìn)行排序即硼; 輸入:n個(gè)數(shù):a1,a2,a3,…,an 輸...
    code武閱讀 653評(píng)論 0 0
  • 參考:十大經(jīng)典排序算法 0逃片、排序算法說(shuō)明 0.1排序的定義 對(duì)一序列對(duì)象根據(jù)某個(gè)關(guān)鍵字進(jìn)行排序。 0.2 術(shù)語(yǔ)說(shuō)明...
    誰(shuí)在烽煙彼岸閱讀 1,008評(píng)論 0 12
  • Ba la la la ~ 讀者朋友們只酥,你們好啊褥实,又到了冷鋒時(shí)間,話不多說(shuō)裂允,發(fā)車损离! 1.冒泡排序(Bub...
    王飽飽閱讀 1,790評(píng)論 0 7
  • 春節(jié)期間通過(guò)妹妹了解了尚赫,憑著直覺(jué)绝编,來(lái)南寧后加入了尚赫僻澎,我很慶幸找到這樣一個(gè)平臺(tái),我感覺(jué)這就是我要追求的事業(yè)和生...
    紅米若水閱讀 826評(píng)論 0 0
  • 大家踩剎車后會(huì)發(fā)生什么十饥? 今天所講的故事就是一腳剎車成就一段跨越千里的浪漫愛(ài)情故事窟勃。 且聽(tīng)我慢慢道來(lái)。...
    詩(shī)不在遠(yuǎn)方閱讀 806評(píng)論 0 2