數(shù)據(jù)結(jié)構(gòu) 歸并排序 C++

個人對歸并排序的理解
1.也是分治法
2.先拆分,拆分總序列娶牌, (先不考慮奇數(shù))
第一次拆分為N個子序列, 每個子序列元素有1個寒瓦,倆倆合并子序列
第二次拆分為N/2子序列于颖,每個子序列元素有2個迟几, 倆倆合并子序列
第三次拆分為N/4子序列消请,每個子序列元素有4個,倆倆合并子序列
----------n/2^n ------------------ 2^n
...最后拆分為2個子序列类腮,每個子序列元素有N/2個臊泰,倆倆合并子序列,成為新的有序序列
3.因?yàn)椴鸱值淖有蛄卸际怯行虻难潦啵喜⑺俣确浅因宇?炱哂ぁw并效率很高

時間復(fù)雜度
平均速度 O(N*logN)
穩(wěn)定排序
#include <iostream>
using namespace std;

        void print(int a[], int n){
            for(int j= 0; j<n; j++){
                cout<<a[j] <<"  ";
            }
            cout<<endl;
        }

        //將r[i…m]和r[m +1 …n]歸并到輔助數(shù)組rf[i…n]
        void Merge(int *r,int *rf, int i, int m, int n)
        {
            int j,k;
            for(k=i,j=m+1; i<=m && j <=n ; ++k){
                if(r[j] < r[i]) rf[k] = r[j++];
                else rf[k] = r[i++];
            }
            while(i <= m)  rf[k++] = r[i++];
            while(j <= n)  rf[k++] = r[j++];
        //    print(rf,n+1);
            

        }

        void MergeSort(int *r, int *rf, int lenght)
        {
            int len = 1;
            int *q = r ;
            int *tmp ;
            while(len < lenght) {

                len = 2 * len ;
                int i = 0;
                while(i+ len <lenght) {
                    Merge(q, rf,  i, i+ len/2 -1, i+ len-1 ); //對等長的兩個子表合并
                    i = i+ len;
                }
                if(i + len/2 < lenght+1){ // 這里要+1
                    Merge(q, rf,  i, i+ len/2 -1, lenght -1); //對不等長的兩個子表合并
                }
                tmp = q; q = rf; rf = tmp; //交換q,rf,以保證下一趟歸并時察滑,仍從q 歸并到rf
            }
        }


        int main(){
            int a[19] = {3,1,5,7,2,4,9,6,8,0,20,3,5,6,7,-1,-1,-2,0};
            int b[19];
            MergeSort(a, b,19);
            cout<<"結(jié)果:";
            print(b,19);
            
        }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市修肠,隨后出現(xiàn)的幾起案子贺辰,更是在濱河造成了極大的恐慌,老刑警劉巖嵌施,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饲化,死亡現(xiàn)場離奇詭異,居然都是意外死亡吗伤,警方通過查閱死者的電腦和手機(jī)吃靠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來足淆,“玉大人巢块,你說我怎么就攤上這事∏珊牛” “怎么了族奢?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長丹鸿。 經(jīng)常有香客問我越走,道長,這世上最難降的妖魔是什么靠欢? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任廊敌,我火速辦了婚禮,結(jié)果婚禮上门怪,老公的妹妹穿的比我還像新娘骡澈。我一直安慰自己,他們只是感情好薪缆,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布秧廉。 她就那樣靜靜地躺著,像睡著了一般拣帽。 火紅的嫁衣襯著肌膚如雪疼电。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天减拭,我揣著相機(jī)與錄音蔽豺,去河邊找鬼。 笑死拧粪,一個胖子當(dāng)著我的面吹牛修陡,可吹牛的內(nèi)容都是我干的沧侥。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼魄鸦,長吁一口氣:“原來是場噩夢啊……” “哼宴杀!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拾因,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤旺罢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后绢记,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扁达,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年蠢熄,在試婚紗的時候發(fā)現(xiàn)自己被綠了跪解。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡签孔,死狀恐怖叉讥,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情骏啰,我是刑警寧澤节吮,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站判耕,受9級特大地震影響透绩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜壁熄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一帚豪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧草丧,春花似錦狸臣、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至懂拾,卻和暖如春煤禽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背岖赋。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工檬果, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓选脊,卻偏偏與公主長得像杭抠,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子恳啥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評論 2 355

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

  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 將一個記錄插入到已排序好...
    依依玖玥閱讀 1,253評論 0 2
  • 排序的基本概念 在計(jì)算機(jī)程序開發(fā)過程中偏灿,經(jīng)常需要一組數(shù)據(jù)元素(或記錄)按某個關(guān)鍵字進(jìn)行排序,排序完成的序列可用于快...
    Jack921閱讀 1,430評論 1 4
  • 一角寸、 單項(xiàng)選擇題(共71題) 對n個元素的序列進(jìn)行冒泡排序時菩混,最少的比較次數(shù)是( )。A. n ...
    貝影閱讀 9,068評論 0 10
  • 概述 排序有內(nèi)部排序和外部排序扁藕,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序,而外部排序是因排序的數(shù)據(jù)很大疚脐,一次不能容納全部...
    蟻前閱讀 5,184評論 0 52
  • 【 男友力一:愛她就幫她清空購物車】 明明樓下超市就可以買到的東西亿柑,為什么女生偏要網(wǎng)購呢? 因?yàn)榕颂焐褪窍硎苁?..
    不愛說話的小喵閱讀 515評論 0 0