簡單排序--插入排序(三)

前言

插入排序算法任然需要O(N^2)的時(shí)間总处,但是一般情況下细燎,他要比冒泡排序快一倍腾供,比選擇排序要快一點(diǎn)罢坝。
[圖片上傳失敗...(image-39380d-1628999776603)]

一、插入排序

假定排序從中間開始搭独,可以更好的理解插入排序婴削。此時(shí),隊(duì)列左邊已經(jīng)排好序牙肝,在隊(duì)列中間標(biāo)記一個(gè)元素唉俗,在這個(gè)作為標(biāo)記的元素左邊已經(jīng)是局部有序,(注意配椭,局部有序在冒泡排序和選擇排序中不會(huì)出現(xiàn))這個(gè)被標(biāo)記的元素右邊是未排序的虫溜。我們需要做的是在左邊有序的隊(duì)列中的適當(dāng)位置插入被標(biāo)記的元素。這意味著左邊有序的隊(duì)列需要先向右移騰出空間股缸。而被標(biāo)記的元素需要出列衡楞,以提供位移空間。

<font color=#999AAA >示例:pandas 是基于NumPy 的一種工具敦姻,該工具是為了解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的瘾境。

插入排序的代碼如下:

 public void insertionSort(){
        int left , right;
        for (right = 1;right<arr.length;right++){
            int temp = arr[right];
            left = right;
            while (left>0&&arr[left-1] >=temp){
                arr[left] = arr[left-1];
                left--;
            }
            arr[left] = temp;
            System.out.println("排序前:"+ Arrays.toString(arr));

        }
    }

在外層的for循環(huán)中,right從變量從1開始镰惦,向右移動(dòng)迷守。它標(biāo)記了未排序部分的最左端的數(shù)據(jù)。而內(nèi)層循環(huán)while中陨献,left變量沖right變量開始盒犹,向左移動(dòng)。直到temp變量小于等于left所指的數(shù)組數(shù)據(jù)項(xiàng)眨业,或者它不能再往做移動(dòng)為止急膀。while中的每一趟都向右移動(dòng)了一個(gè)已排序的數(shù)據(jù)項(xiàng)。
image.png

測試

public class Main {

    public static void main(String[] args) {

        Random random = new Random();
        int[] arr = new int[10];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = random.nextInt(100);
        }
        System.out.println("排序前:"+Arrays.toString(arr));
        InsertSort insertSort = new InsertSort(arr);
        insertSort.insertionSort();
        System.out.println("排序后:"+Arrays.toString(arr));
    }
}

結(jié)果:

排序前:[45, 92, 15, 27, 45, 18, 8, 24, 43, 56]
排序前:[45, 92, 15, 27, 45, 18, 8, 24, 43, 56]
排序前:[15, 45, 92, 27, 45, 18, 8, 24, 43, 56]
排序前:[15, 27, 45, 92, 45, 18, 8, 24, 43, 56]
排序前:[15, 27, 45, 45, 92, 18, 8, 24, 43, 56]
排序前:[15, 18, 27, 45, 45, 92, 8, 24, 43, 56]
排序前:[8, 15, 18, 27, 45, 45, 92, 24, 43, 56]
排序前:[8, 15, 18, 24, 27, 45, 45, 92, 43, 56]
排序前:[8, 15, 18, 24, 27, 43, 45, 45, 92, 56]
排序前:[8, 15, 18, 24, 27, 43, 45, 45, 56, 92]
排序后:[8, 15, 18, 24, 27, 43, 45, 45, 56, 92]

總結(jié)

在每趟結(jié)束時(shí)龄捡,在將temp位置項(xiàng)插入后卓嫂,比right變量下標(biāo)小的數(shù)據(jù)項(xiàng)都是局部有序的。
在第一趟中聘殖,它對(duì)多比較一次晨雳,第二趟最多比較兩次行瑞,一次類推。最后一趟最多餐禁,比較N-1次血久。因此有
1+ 2+3+...............+(N-1) = N*(N-1)/2
然而,因?yàn)槊刻伺判虬l(fā)現(xiàn)插入插入點(diǎn)之前帮非,平均只有全體數(shù)據(jù)項(xiàng)的一半真的進(jìn)行了比較氧吐,我們chuyi2得到
N*(N-1)/4

復(fù)制的次數(shù)大致等于比較次數(shù),然而末盔,一次復(fù)制與一次交換的事件耗費(fèi)不同筑舅,所以相對(duì)于隨機(jī)數(shù)據(jù),這個(gè)算法比冒泡排序快一倍陨舱,比選擇排序略快翠拣。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市游盲,隨后出現(xiàn)的幾起案子误墓,更是在濱河造成了極大的恐慌,老刑警劉巖背桐,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件优烧,死亡現(xiàn)場離奇詭異蝉揍,居然都是意外死亡链峭,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門又沾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來弊仪,“玉大人,你說我怎么就攤上這事杖刷±” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵滑燃,是天一觀的道長役听。 經(jīng)常有香客問我,道長表窘,這世上最難降的妖魔是什么典予? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮乐严,結(jié)果婚禮上瘤袖,老公的妹妹穿的比我還像新娘。我一直安慰自己昂验,他們只是感情好捂敌,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布艾扮。 她就那樣靜靜地躺著,像睡著了一般占婉。 火紅的嫁衣襯著肌膚如雪泡嘴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天逆济,我揣著相機(jī)與錄音磕诊,去河邊找鬼。 笑死纹腌,一個(gè)胖子當(dāng)著我的面吹牛霎终,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播升薯,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼莱褒,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了涎劈?” 一聲冷哼從身側(cè)響起广凸,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蛛枚,沒想到半個(gè)月后谅海,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蹦浦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年扭吁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盲镶。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡侥袜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出溉贿,到底是詐尸還是另有隱情枫吧,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布宇色,位于F島的核電站九杂,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏宣蠕。R本人自食惡果不足惜例隆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望植影。 院中可真熱鬧裳擎,春花似錦、人聲如沸思币。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至惶我,卻和暖如春妈倔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背绸贡。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來泰國打工盯蝴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人听怕。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓捧挺,卻偏偏與公主長得像,于是被迫代替她去往敵國和親尿瞭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子闽烙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

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