青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

那誰的技術博客

感興趣領域:高性能服務器編程,存儲,算法,Linux內核
隨筆 - 210, 文章 - 0, 評論 - 1183, 引用 - 0
數據加載中……

<<算法導論>>一起學之一:我寫的一個Merge算法

       第二章中給出的Merge算法,本質是初始化兩個數組分別保存前后兩個已經排序好了的數組,然后逐個掃描比較兩個數組中的元素把元素放在原來數組的合適的位置上.
       不知道之前有沒有人做過這個算法,比起書上的那個并不見得高明,在最壞的情況下要交換元素(N/2)*(N/2)也就是N的平方數量級(這里N是數組的大小),這個最壞的情況就是前面的數組中的元素都比后面數組的元素大.
       雖然不見得是最好的,不過至少是自己思考的結果,放上來也許對別人有啟發.
      
// 如何證明算法的正確性?
// 我改進的merge算法
void Merge1(int array[], int start, int mid, int end)
{
    
// 思想:設置兩個哨兵,分別指向前后兩個數組,
    
// 逐個把前面的數組的元素和后面數組的元素進行比較
    
// 如果前面的元素不比后面的元素大,那么前面數組的哨兵前移一位
    
// 否則,交換兩個元素,并且對后面的數組進行掃描,確保新的元素放在合適的位置
    
// 當前面的數組掃描完畢之后循環結束
    for (int i = start; i < mid + 1++i)
    
{
        
if (array[i] > array[mid + 1])
        
{
            swap(
&array[i], &array[mid + 1]);

            
// 把新放入后面數組的元素放到合適的位置去
            for (int j = mid +1; j + 1 <= end && array[j] > array[j + 1]; ++j)
            
{
                swap(
&array[j], &array[j + 1]);
            }

        }
       
    }

}


// 書上的算法實現
void Merge(int array[], int start, int mid, int end)
{
    
int temp1[10], temp2[10];
    
int n1, n2;
    n1 
= mid - start + 1;
    n2 
= end - mid;

    
// 拷貝前半部分數組
    for (int i = 0; i < n1; i++)
    
{
        temp1[i] 
= array[start + i];
    }

    
// 拷貝后半部分數組
    for (int i = 0; i < n2; i++)
    
{
        temp2[i] 
= array[mid + i + 1];
    }

    
// 把后面的元素設置的很大
    temp1[n1] = temp2[n2] = 1000;
    
// 逐個掃描兩部分數組然后放到相應的位置去
    for (int k = start, i = 0, j = 0; k <= end; k++)
    
{
        
if (temp1[i] <= temp2[j])
        
{
            array[k] 
= temp1[i];
            i
++;
        }

        
else
        
{
            array[k] 
= temp2[j];
            j
++;
        }

    }

}


void Merge_Sort(int array[], int start, int end)
{
    
if (start < end)
    
{
        
int i;
        i 
= (end + start) / 2;
        Merge_Sort(array, start, i);
        Merge_Sort(array, i 
+ 1, end);

        Merge1(array, start, i, end);
    }

}

 

      對外的接口:Merge_Sort(array, start, end);
即:傳入一個數組,和起始位置中止位置,比如數組array[10],那么就是Merge_Sort(arrry,0,9)

posted on 2006-03-04 22:29 那誰 閱讀(1494) 評論(2)  編輯 收藏 引用 所屬分類: 算法與數據結構

評論

# re: >一起學之一:我寫的一個Merge算法  回復  更多評論   

這個 blog 好,代碼還可以伸縮啊。回頭得給 fan 老大提提意見了。
2006-03-07 15:13 | win_hate

# re: >一起學之一:我寫的一個Merge算法  回復  更多評論   

這個算法不需要輔助數組是一個原地排序。但是用了兩重循環,復雜度為O(N^2),失去了歸并排序的本意。
第二重循環是一個冒泡過程可改成折半插入,減少比較和元素移動。以重循環可先用折半查找尋找前半部
分第一個比array[mid+1]大的,但是這個算法仍然是O(N^2)的。原地的歸并排序如bartcher奇偶歸并排序
復雜度為O(N(logN)^2)可以看Robert Sedgewick的algorithm in c++,里面有實現。
2006-04-21 11:33 | yangtou
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            精品二区久久| 国产精品免费区二区三区观看| 国产亚洲精品aa| 亚洲欧美另类综合偷拍| 亚洲欧美日韩久久精品| 国产精品一区二区在线观看网站 | 欧美日韩亚洲高清| 亚洲午夜激情| 久久天堂国产精品| 亚洲精品国产精品国自产观看浪潮 | 久久久久久久久久看片| 影音先锋成人资源站| 欧美黑人多人双交| 亚洲一区二区三区成人在线视频精品 | 亚洲经典三级| 欧美激情一区二区久久久| 一本高清dvd不卡在线观看| 欧美在线精品免播放器视频| 亚洲高清视频在线观看| 国产精品久久久久久久久久久久 | 欧美日韩在线视频首页| 久久久久九九视频| 99re热这里只有精品视频| 久热精品视频在线观看| 午夜在线视频观看日韩17c| 亚洲久色影视| 国语自产偷拍精品视频偷| 国产精品超碰97尤物18| 蜜臀99久久精品久久久久久软件| 中文欧美在线视频| 亚洲精品日韩久久| 亚洲激情综合| 亚洲免费视频在线观看| 老色鬼久久亚洲一区二区 | 欧美日本一区二区视频在线观看| 久久精品二区| 午夜免费在线观看精品视频| 一区二区三区福利| 99综合精品| 久久久久久精| 国产精品区一区二区三| 国产精品成人免费精品自在线观看| 国产一区二区三区四区三区四 | 美国成人直播| 香蕉久久国产| 亚洲乱码国产乱码精品精天堂 | 亚洲激情网址| 久久婷婷国产麻豆91天堂| 久久久精品日韩欧美| 欧美在线视频全部完| 久久成人精品一区二区三区| 欧美色视频在线| 日韩午夜av| 亚洲一区二区三区激情| 中文精品视频| 亚久久调教视频| 一区二区三区鲁丝不卡| 欧美肉体xxxx裸体137大胆| 欧美在线影院| 亚洲第一视频网站| 亚洲社区在线观看| 国产精品久久久久影院色老大| 亚洲日韩成人| 日韩午夜精品视频| 国产欧美日韩中文字幕在线| 国产亚洲欧洲997久久综合| 亚洲二区在线视频| 国精品一区二区| 在线一区日本视频| 亚洲黄色在线视频| 国产人妖伪娘一区91| 一区二区三区国产在线| 亚洲日本在线观看| 欧美.日韩.国产.一区.二区| 国产精品视频大全| 91久久在线视频| 亚洲精品一二区| 女女同性精品视频| 亚洲黄色视屏| 亚洲嫩草精品久久| 国产精品久久久久久久久久三级| 亚洲剧情一区二区| 亚洲视频一区二区免费在线观看| 欧美激情一区二区| 亚洲一区二区三区四区中文 | 一区二区日韩欧美| 亚洲深夜激情| 亚洲天堂久久| 久久久久久久一区| 亚洲精品乱码久久久久久日本蜜臀| 欧美日韩精品一区视频| 久久婷婷国产麻豆91天堂| 国产一级揄自揄精品视频| 欧美+日本+国产+在线a∨观看| 亚洲级视频在线观看免费1级| 亚洲在线观看| 亚洲国产精品成人精品| 国产精品激情偷乱一区二区∴| 亚洲欧美中文日韩v在线观看| 亚洲日本成人在线观看| 欧美在线网址| 亚洲一区二区三区四区五区午夜 | 亚洲一级黄色av| 欧美国产在线观看| 国产视频自拍一区| 亚洲欧美影音先锋| 亚洲黄色av| 欧美韩日精品| 亚洲最快最全在线视频| 玖玖玖免费嫩草在线影院一区| 亚洲午夜激情| 中文在线资源观看视频网站免费不卡| 蘑菇福利视频一区播放| 国产亚洲福利社区一区| 国产精品美女www爽爽爽视频| 欧美日韩情趣电影| 欧美日韩精品一二三区| 欧美日韩亚洲激情| 欧美日韩精品福利| 欧美视频一区二| 国产欧美一区二区三区国产幕精品 | 久久电影一区| 欧美刺激性大交免费视频 | 99精品福利视频| 亚洲欧洲另类国产综合| 亚洲毛片网站| 性xx色xx综合久久久xx| 久久综合五月| 欧美精品九九99久久| 欧美色精品在线视频| 国产资源精品在线观看| 亚洲欧洲另类| 国产视频久久久久| 亚洲国产美女| 亚洲第一精品夜夜躁人人爽| 国产精品视频一| 亚洲人成欧美中文字幕| 欧美一区在线视频| 一区二区三区 在线观看视| 久久福利一区| 亚洲专区在线| 欧美三区免费完整视频在线观看| 亚洲全黄一级网站| 另类成人小视频在线| 午夜国产欧美理论在线播放| 欧美日韩在线观看视频| 日韩五码在线| 亚洲国产99精品国自产| 老司机免费视频一区二区三区| 国产欧美精品日韩精品| 亚洲欧美日韩精品一区二区| 最新亚洲电影| 国产精品自拍小视频| 国产欧美亚洲一区| 欧美精品久久久久久久久久| 99在线|亚洲一区二区| 久久爱www久久做| 在线视频你懂得一区| 欧美高清在线视频观看不卡| 午夜精品三级视频福利| 美女精品自拍一二三四| 国产精品xvideos88| 亚洲精品综合| 午夜精品福利一区二区蜜股av| 亚洲成人资源| 亚洲国产欧美一区二区三区丁香婷| 你懂的亚洲视频| 亚洲一区视频| 日韩视频二区| 最近中文字幕mv在线一区二区三区四区 | 欧美国产一区二区| 久久av一区二区| 欧美日韩一区二区三| 欧美va天堂在线| 国产日韩专区在线| 亚洲欧美一区二区激情| 一区二区三区国产在线| 老司机午夜精品视频| 久久久久在线观看| 欧美一区二区在线| 亚洲第一福利社区| 欧美影视一区| 久久一区激情| 亚洲国产专区校园欧美| 久久久久久久欧美精品| 久久一区亚洲| 亚洲精品国产精品乱码不99按摩 | 亚洲国产欧洲综合997久久| 在线不卡a资源高清| 欧美成人精品高清在线播放| 亚洲韩国日本中文字幕| 亚洲欧美国产另类| 国产真实久久| 欧美视频不卡| 久久亚洲欧洲| 午夜综合激情| 一区二区精品国产| 美女国内精品自产拍在线播放| 在线综合视频| 亚洲国产天堂久久综合|