Java簡(jiǎn)單排序之插入排序

插入排序(Insertion sort)是一種簡(jiǎn)單直觀且穩(wěn)定的排序算法。

插入排序的工作方式非常像人們排序一手撲克牌一樣冶伞。開(kāi)始時(shí)唆香,我們的左手為空并且桌子上的牌面朝下。然后滑沧,我
們每次從桌子上拿走一張牌并將它插入左手中正確的位置并村。為了找到一張牌的正確位置,我們從右到左將它與已在
手中的每張牌進(jìn)行比較滓技,如下圖所示:

image.png

排序原理:

1.把所有的元素分為兩組哩牍,已經(jīng)排序的和未排序的; 2.找到未排序的組中的第一個(gè)元素,向已經(jīng)排序的組中進(jìn)行插入;
3.倒敘遍歷已經(jīng)排序的元素令漂,依次和待插入的元素進(jìn)行比較膝昆,直到找到一個(gè)元素小于等于待插入元素,那么就把待 插入元素放到這個(gè)位置洗显,其他的元素向后移動(dòng)一位;

image.png

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

    public static void insertionSort(int[] a) {
        System.out.println("待排序數(shù)據(jù): " + Arrays.toString(a));
        //這個(gè)是遍歷沒(méi)有排序的數(shù)組
        for (int i = 1; i < a.length; i++) {
            //這個(gè)是遍歷排序完成的數(shù)組外潜,拿待排序的數(shù)據(jù)依次和排好的數(shù)組元素比較交換,這里就和冒泡排序一樣了
            for (int j = i; j > 0; j--) {
                if (a[j - 1] > a[j]) {
                    int temp = a[j];
                    a[j] = a[j - 1];
                    a[j - 1] = temp;
                } else {
                    break;//找到了合適的位置挠唆,不需要再比較,結(jié)束循環(huán)
                }
            }
            System.out.println("第" + (i) + "輪排序后的數(shù)組為: " + Arrays.toString(a));
        }
    }

插入排序的時(shí)間復(fù)雜度分析:

插入排序使用了雙層for循環(huán)嘱吗,其中內(nèi)層循環(huán)的循環(huán)體是真正完成排序的代碼玄组,所以滔驾,我們分析插入排序的時(shí)間復(fù) 雜度,主要分析一下內(nèi)層循環(huán)體的執(zhí)行次數(shù)即可俄讹。
最壞情況哆致,也就是待排序的數(shù)組元素為{12,10,6,5,4,3,2,1},那么: 比較的次數(shù)為: (N-1)+(N-2)+(N-3)+...+2+1=((N-1)+1)(N-1)/2=N^2/2-N/2; 交換的次數(shù)為: (N-1)+(N-2)+(N-3)+...+2+1=((N-1)+1)(N-1)/2=N^2/2-N/2; 總執(zhí)行次數(shù)為:
(N^2/ 2-N/2)+(N^2/ 2-N/2)=N^2-N; 按照大O推導(dǎo)法則患膛,保留函數(shù)中的最高階項(xiàng)那么最終插入排序的時(shí)間復(fù)雜度為O(N^2).

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末摊阀,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子踪蹬,更是在濱河造成了極大的恐慌胞此,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件跃捣,死亡現(xiàn)場(chǎng)離奇詭異漱牵,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)疚漆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)酣胀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人娶聘,你說(shuō)我怎么就攤上這事闻镶。” “怎么了丸升?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵铆农,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我发钝,道長(zhǎng)顿涣,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任酝豪,我火速辦了婚禮涛碑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘孵淘。我一直安慰自己蒲障,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布瘫证。 她就那樣靜靜地躺著揉阎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪背捌。 梳的紋絲不亂的頭發(fā)上毙籽,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音毡庆,去河邊找鬼坑赡。 笑死烙如,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的毅否。 我是一名探鬼主播亚铁,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼螟加!你這毒婦竟也來(lái)了徘溢?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤捆探,失蹤者是張志新(化名)和其女友劉穎然爆,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體徐许,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡施蜜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了雌隅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片翻默。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖恰起,靈堂內(nèi)的尸體忽然破棺而出修械,到底是詐尸還是另有隱情,我是刑警寧澤检盼,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布肯污,位于F島的核電站,受9級(jí)特大地震影響吨枉,放射性物質(zhì)發(fā)生泄漏蹦渣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一貌亭、第九天 我趴在偏房一處隱蔽的房頂上張望柬唯。 院中可真熱鬧,春花似錦圃庭、人聲如沸锄奢。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)拘央。三九已至,卻和暖如春书在,著一層夾襖步出監(jiān)牢的瞬間灰伟,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工儒旬, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留袱箱,地道東北人遏乔。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓义矛,卻偏偏與公主長(zhǎng)得像发笔,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子凉翻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

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