算法學(xué)習(xí):直接插入排序

背景介紹

是一種簡(jiǎn)單直觀的排序算法。它的工作原理是通過構(gòu)建有序序列,對(duì)于未排序數(shù)據(jù),在已排序序列中從后向前掃描,找到相應(yīng)位置并插入。插入排序在實(shí)現(xiàn)上,通常采用in-place排序(即只需用到O(1)的額外空間的排序),因而在從后向前掃描過程中,需要反復(fù)把已排序元素逐步向后挪位,為最新元素提供插入空間。 ----- 來自?wikipedia

算法規(guī)則

一般來說,插入排序都采用in-place在數(shù)組上實(shí)現(xiàn)。具體算法描述如下:

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

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

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

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

5. 新元素插入到該位置后

6.重復(fù)步驟2~5

復(fù)雜度

插入排序當(dāng)中有兩個(gè)循環(huán),假設(shè)數(shù)組的大小為n,則第一個(gè)循環(huán)是n-1次,第二個(gè)while循環(huán)在最壞的情況下是1到n-1次。因此插入排序的時(shí)間復(fù)雜度大約為如下形式:

1+2+3+4+...+n-1 = n(n-1)/ 2 = O(n2),時(shí)間復(fù)雜度為輸入規(guī)模的2次函數(shù),可見插入排序的時(shí)間復(fù)雜度是比較高的。這是原理上的簡(jiǎn)單分析,最后在“算林大會(huì)”中,各位可以清楚的看到插入排序隨著輸入規(guī)模的增長(zhǎng),時(shí)間會(huì)指數(shù)倍的上升。

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


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Ba la la la ~ 讀者朋友們,你們好啊,又到了冷鋒時(shí)間,話不多說,發(fā)車! 1.冒泡排序(Bub...
    王飽飽閱讀 1,897評(píng)論 0 7
  • 排序算法說明 (1)排序的定義:對(duì)一序列對(duì)象根據(jù)某個(gè)關(guān)鍵字進(jìn)行排序; 輸入:n個(gè)數(shù):a1,a2,a3,…,an輸出...
    BULL_DEBUG閱讀 851評(píng)論 0 3
  • 總結(jié)一下常見的排序算法。 排序分內(nèi)排序和外排序。內(nèi)排序:指在排序期間數(shù)據(jù)對(duì)象全部存放在內(nèi)存的排序。外排序:指在排序...
    jiangliang閱讀 1,519評(píng)論 0 1
  • 今天出去辦事,看到高中門口圍了很多人,以為是接高考的學(xué)生,問了下旁邊的一個(gè)路人,原來是學(xué)校的學(xué)生放假,給高考騰教室...
    cora的生活手冊(cè)閱讀 268評(píng)論 0 0
  • 每次擼串必點(diǎn)烤尖椒,熱辣爽脆的口感和油亮清綠的色澤無不讓人食欲大開。 今天中午在家里用烤箱做了試驗(yàn),感覺還是很不錯(cuò)...
    江陵123閱讀 494評(píng)論 0 0

友情鏈接更多精彩內(nèi)容