平方級的排序算法

插入排序

每次選擇一個元素K插入到之前已排好序的部分A[1…i]中搓蚪,由后向前移動元素直到找到一個合適的位置。
插入排序是穩(wěn)定的(相等的時候表示找到合適位置了,就不需要再移動元素了)。

void InsertSort(RecType R[], int n){
    int i, j;
    RecType temp;
    for(i = 1; i<n; ++i){
        temp = R[i];
        j = i - 1;//從后往前找到一個合適的位置
        while(j >= 0 && temp.key < R[j].key){
            R[j + 1] = R[j];
            j--;
        }
        R[j + 1] = temp;//將元素放置到該合適位置
    }
}

冒泡排序

通過交換元素,使關鍵字最大的記錄如氣泡一般逐漸往上“漂浮”直至“水面”创淡。

排序過程中只交換相鄰兩個元素的位置。因此南吮,當兩個數(shù)相等時琳彩,是沒必要交換兩個數(shù)的位置的。所以部凑,它們的相對位置并沒有改變露乏,冒泡排序算法是穩(wěn)定的

void BubbleSort(RecType R[], int n){
    int i, j;
    RecType temp;
    for(i=0; i<n-1; i++){//每個元素
        bool flag = false;
        for(j=n-1;j > i; j--){//對每個元素進行冒泡
             if(R[j].key < R[j - 1].key){
                 temp = R[j];
                 R[j] = R[j - 1];
                 R[j - 1] = temp;
                 flag = true;
            }
            if(!flag){//如果沒有交換,說明已經(jīng)有序了
                return;
            }
        }
   }
} 

選擇排序

搜索無序數(shù)組涂邀,找到當前最小的元素瘟仿,并與無序數(shù)組首元素交換,縮小整個無序數(shù)組比勉,并重復操作劳较。直到整個數(shù)組有序。
由于每次都是選取未排序序列A中的最小元素x與A中的第一個元素交換浩聋,因此跨距離了观蜗,很可能破壞了元素間的相對位置,因此選擇排序是不穩(wěn)定的赡勘!

void SelectSort(RecType R[], int n){
    int i, j, k;
    RecType temp;
    for(i = 0; i < n - 1; ++i){
        k = i;
       //便利無序數(shù)組嫂便,找到最小的元素
        for(j = i + 1; j < n; j++){
            if(R[j].key < R[k].key){
                k = j;
            }
        }
        if(k != i){
           swap(R[i], R[k]);
        }
}

希爾排序

思想:希爾排序也是一種插入排序方法,實際上是一種分組插入方法捞镰。先取定一個小于n的整數(shù)d1作為第一個增量,把表的全部記錄分成d1個組,所有距離為d1的倍數(shù)的記錄放在同一個組中,在各組內(nèi)進行直接插入排序闸与;然后,取第二個增量d2(<d1),重復上述的分組和排序,直至所取的增量dt=1(dt<dt-1<…<d2<d1),即所有記錄放在同一組中進行直接插入排序為止。
希爾排序時間復雜度平均為O(nlogn)

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末岸售,一起剝皮案震驚了整個濱河市践樱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌凸丸,老刑警劉巖拷邢,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異屎慢,居然都是意外死亡瞭稼,警方通過查閱死者的電腦和手機忽洛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來环肘,“玉大人欲虚,你說我怎么就攤上這事』诒ⅲ” “怎么了复哆?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長腌零。 經(jīng)常有香客問我梯找,道長,這世上最難降的妖魔是什么益涧? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任锈锤,我火速辦了婚禮,結(jié)果婚禮上饰躲,老公的妹妹穿的比我還像新娘牙咏。我一直安慰自己,他們只是感情好嘹裂,可當我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布妄壶。 她就那樣靜靜地躺著,像睡著了一般寄狼。 火紅的嫁衣襯著肌膚如雪丁寄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天泊愧,我揣著相機與錄音伊磺,去河邊找鬼。 笑死删咱,一個胖子當著我的面吹牛屑埋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播痰滋,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼摘能,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了敲街?” 一聲冷哼從身側(cè)響起团搞,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎多艇,沒想到半個月后逻恐,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年复隆,在試婚紗的時候發(fā)現(xiàn)自己被綠了拨匆。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡挽拂,死狀恐怖涮雷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情轻局,我是刑警寧澤洪鸭,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站仑扑,受9級特大地震影響览爵,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜镇饮,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一蜓竹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧储藐,春花似錦俱济、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至辖源,卻和暖如春蔚携,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背克饶。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工酝蜒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人矾湃。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓亡脑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親邀跃。 傳聞我的和親對象是個殘疾皇子霉咨,可洞房花燭夜當晚...
    茶點故事閱讀 45,573評論 2 359

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

  • 總結(jié)一下常見的排序算法。 排序分內(nèi)排序和外排序坞嘀。內(nèi)排序:指在排序期間數(shù)據(jù)對象全部存放在內(nèi)存的排序躯护。外排序:指在排序...
    jiangliang閱讀 1,350評論 0 1
  • 概述 排序有內(nèi)部排序和外部排序惊来,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進行排序丽涩,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部...
    蟻前閱讀 5,191評論 0 52
  • 概述:排序有內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進行排序矢渊,而外部排序是因排序的數(shù)據(jù)很大继准,一次不能容納全部...
    每天刷兩次牙閱讀 3,733評論 0 15
  • 這是我以前寫的博客,我遷移過來的矮男,時間寫的有點久遠 1.冒泡排序和選擇排序 為什么把冒泡排序和選擇排序放在一塊兒呢...
    ianCure閱讀 2,290評論 3 19
  • Git可以設置全局忽略名單移必,適用于所有的項目。 在用戶目錄(就windows來說是:C:/Users/用戶名)下創(chuàng)...
    Cindy小隱閱讀 5,469評論 0 1