插入排序

插入排序—直接插入排序

基本思想:
將一個(gè)記錄插入到已排序好的有序表中狭园,從而得到一個(gè)新读处,記錄數(shù)增1的有序表。即:先將序列的第1個(gè)記錄看成是一個(gè)有序的子序列唱矛,然后從第2個(gè)記錄逐個(gè)進(jìn)行插入罚舱,直至整個(gè)序列有序?yàn)橹埂?br> 要點(diǎn):設(shè)立哨兵,作為臨時(shí)存儲(chǔ)和判斷數(shù)組邊界之用绎谦。

void InsertSort(int a[], int n)  
{  
    for(int i= 1; i<n; i++){  
        if(a[i] < a[i-1]){               //若第i個(gè)元素大于i-1元素管闷,直接插入。小于的話窃肠,移動(dòng)有序表后插入  
            int j= i-1;   
            int x = a[i];        //復(fù)制為哨兵包个,即存儲(chǔ)待排序元素  
            a[i] = a[i-1];           //先后移一個(gè)元素  
            while(x < a[j]){  //查找在有序表的插入位置  
                a[j+1] = a[j];  
                j--;         //元素后移  
            }  
            a[j+1] = x;      //插入到正確位置  
        }  
    }        
}  

穩(wěn)定性: 穩(wěn)定
效率:時(shí)間復(fù)雜度:O(n^2)

插入排序—希爾排序

基本思想:
先將整個(gè)待排序的記錄序列分割成為若干子序列分別進(jìn)行直接插入排序,待整個(gè)序列中的記錄“基本有序”時(shí)冤留,再對全體記錄進(jìn)行依次直接插入排序碧囊。
操作方法:
1.選擇一個(gè)增量序列t1树灶,t2,…糯而,tk天通,其中ti>tj,tk=1歧蒋;
2.按增量序列個(gè)數(shù)k土砂,對序列進(jìn)行k 趟排序州既;
3.每趟排序谜洽,根據(jù)對應(yīng)的增量ti,將待排序列分割成若干長度為m 的子序列吴叶,分別對各子表進(jìn)行直接插入排序阐虚。僅增量因子為時(shí),整個(gè)序列作為一個(gè)表來處理蚌卤,表長度即為整個(gè)序列的長度实束。
算法實(shí)現(xiàn):
我們簡單處理增量序列:增量序列d = {n/2 ,n/4, n/8 .....1} n為要排序數(shù)的個(gè)數(shù)即:先將要排序的一組記錄按某個(gè)增量d(n/2,n為要排序數(shù)的個(gè)數(shù))分成若干組子序列,每組中記錄的下標(biāo)相差d.對每組中全部元素進(jìn)行直接插入排序逊彭,然后再用一個(gè)較小的增量(d/2)對它進(jìn)行分組咸灿,在每組中再進(jìn)行直接插入排序。繼續(xù)不斷縮小增量直至為1侮叮,最后使用直接插入排序完成排序避矢。

void ShellInsertSort(int a[], int n, int dk)  
{  
    for(int i= dk; i<n; ++i){  
        if(a[i] < a[i-dk]){          //若第i個(gè)元素大于i-1元素,直接插入囊榜。小于的話审胸,移動(dòng)有序表后插入  
            int j = i-dk;     
            int x = a[i];           //復(fù)制為哨兵,即存儲(chǔ)待排序元素  
            a[i] = a[i-dk];         //首先后移一個(gè)元素  
            while(x < a[j]){     //查找在有序表的插入位置  
                a[j+dk] = a[j];  
                j -= dk;             //元素后移  
            }  
            a[j+dk] = x;            //插入到正確位置  
        }  
        print(a, n,i );  
    }  
      
}  
void ShellSort(int a[], int n){  
    int dk = n/2;  //先按增量d(n/2,n為要排序數(shù)的個(gè)數(shù)進(jìn)行希爾排序 
    while( dk >= 1  ){  
        ShellInsertSort(a, n, dk);  
        dk = dk/2;  
    }  
} 

穩(wěn)定性: 不穩(wěn)定
效率:關(guān)鍵碼的比較次數(shù)與記錄移動(dòng)次數(shù)依賴于增量因子序列d的選取卸勺,時(shí)間復(fù)雜度:O(nlogn)~O(n^2)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末砂沛,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子曙求,更是在濱河造成了極大的恐慌碍庵,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件悟狱,死亡現(xiàn)場離奇詭異怎抛,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)芽淡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門马绝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人挣菲,你說我怎么就攤上這事富稻≈腊睿” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵椭赋,是天一觀的道長抚岗。 經(jīng)常有香客問我,道長哪怔,這世上最難降的妖魔是什么宣蔚? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮认境,結(jié)果婚禮上胚委,老公的妹妹穿的比我還像新娘。我一直安慰自己叉信,他們只是感情好亩冬,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著硼身,像睡著了一般硅急。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上佳遂,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天营袜,我揣著相機(jī)與錄音,去河邊找鬼丑罪。 笑死荚板,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的巍糯。 我是一名探鬼主播啸驯,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼祟峦!你這毒婦竟也來了罚斗?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤宅楞,失蹤者是張志新(化名)和其女友劉穎针姿,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體厌衙,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡距淫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了婶希。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片榕暇。...
    茶點(diǎn)故事閱讀 38,137評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出彤枢,到底是詐尸還是另有隱情狰晚,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布缴啡,位于F島的核電站壁晒,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏业栅。R本人自食惡果不足惜秒咐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望碘裕。 院中可真熱鬧携取,春花似錦、人聲如沸娘汞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽你弦。三九已至,卻和暖如春燎孟,著一層夾襖步出監(jiān)牢的瞬間禽作,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工揩页, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留旷偿,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓爆侣,卻偏偏與公主長得像萍程,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子兔仰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評論 2 345

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

  • 希爾排序是1959年由 D.L.Shell 提出來的茫负,相對直接排序有較大的改進(jìn)。希爾排序又叫縮小增量排序乎赴。 基本思...
    NEXTFIND閱讀 464評論 0 1
  • 概述:排序有內(nèi)部排序和外部排序忍法,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序,而外部排序是因排序的數(shù)據(jù)很大榕吼,一次不能容納全部...
    每天刷兩次牙閱讀 3,727評論 0 15
  • 參考鏈接 插入排序:希爾排序(Shell's Sort) 白話經(jīng)典算法系列之三 希爾排序的實(shí)現(xiàn) 希爾排序是1959...
    夢即是幻閱讀 421評論 0 0
  • 概述 排序有內(nèi)部排序和外部排序饿序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序,而外部排序是因排序的數(shù)據(jù)很大羹蚣,一次不能容納全部...
    蟻前閱讀 5,167評論 0 52
  • 苔痕階綠原探,瓦礫墻檐舊。巷弄人家民風(fēng)淳,曲徑通幽添靜咽弦。山藥即曬庭中告匠,葳蕤碧葉偏生。拾碎光陰念故离唬,朦朧小鎮(zhèn)依舊后专。
    KenChoi閱讀 280評論 2 3