• <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>
            posts - 183,  comments - 10,  trackbacks - 0

            歸并排序是穩定的

            時間復雜度:O(NlogN)

            空間復雜度:O(N)

            合并 + 遞歸

            http://zh.wikipedia.org/wiki/%E5%BD%92%E5%B9%B6%E6%8E%92%E5%BA%8F

            http://baike.baidu.com/view/90797.htm

            http://sjjg.js.zwu.edu.cn/SFXX/paixu/paixu6.5.1.html

            http://www.zjhyzx.net/Article/ShowArticle.asp?ArticleID=924

            http://learn.akae.cn/media/ch11s04.html

            http://student.zjzk.cn/course_ware/data_structure/web/paixu/paixu8.5.1.1.htm

             1 #include <iostream>
             2 #include <cstdlib>
             3 #include <cstring>
             4 using namespace std;
             5 
             6 void merge(int array[], int low, int mid, int high)
             7 {
             8         int i, k;
             9         int *temp = (int *) malloc((high-low+1* sizeof(int)); //申請空間,使其大小為兩個已經排序序列之和,該空間用來存放合并后的序列
            10         int begin1 = low;
            11         int end1 = mid;
            12         int begin2 = mid + 1;
            13         int end2 = high;
            14  
            15         for (k = 0; begin1 <= end1 && begin2 <= end2; ++k)  //比較兩個指針所指向的元素,選擇相對小的元素放入到合并空間,并移動指針到下一位置
            16                 if(array[begin1]<=array[begin2])
            17                         temp[k] = array[begin1++];
            18                 else
            19                         temp[k] = array[begin2++];       
            20         if(begin1 <= end1) //若第一個序列有剩余,直接拷貝出來粘到合并序列尾
            21                 memcpy(temp+k, array+begin1, (end1-begin1+1)*sizeof(int));
            22         if(begin2 <= end2) //若第二個序列有剩余,直接拷貝出來粘到合并序列尾
            23                 memcpy(temp+k, array+begin2, (end2-begin2+1)*sizeof(int));
            24         memcpy(array+low, temp, (high-low+1)*sizeof(int));//將排序好的序列拷貝回數組中
            25         free(temp);
            26 }
            27 
            28 void merge_sort(int array[], unsigned int first, unsigned int last)
            29 {
            30         int mid = 0;
            31         if(first<last)
            32         {
            33                 mid = (first+last)/2;
            34                 merge_sort(array, first, mid);
            35                 merge_sort(array, mid+1,last);
            36                 merge(array,first,mid,last);
            37         }
            38 }
            39 
            40 int main()
            41 {
            42     int a[8= {47532861};
            43     for (int i = 0; i != 8++i)
            44     {
            45         cout << a[i] << ' ';
            46     }
            47     cout << endl;
            48     merge_sort(a, 07);
            49     for (int i = 0; i != 8++i)
            50     {
            51         cout << a[i] << ' ';
            52     }
            53     cout << endl;
            54 }



            posted on 2011-06-22 00:13 unixfy 閱讀(119) 評論(0)  編輯 收藏 引用
            久久久久亚洲精品男人的天堂| 久久成人国产精品一区二区| 久久天天躁夜夜躁狠狠躁2022| 亚洲国产成人久久笫一页| 亚洲欧美久久久久9999 | 国产麻豆精品久久一二三| 久久福利青草精品资源站| 人妻中文久久久久| 久久精品国产亚洲AV高清热| 精品久久人人爽天天玩人人妻 | 99麻豆久久久国产精品免费| 很黄很污的网站久久mimi色| 日本人妻丰满熟妇久久久久久| 狠狠色伊人久久精品综合网 | 伊人久久大香线蕉成人| 精品久久久久久国产| 一本久久a久久精品vr综合| 亚洲天堂久久精品| 久久超乳爆乳中文字幕| 久久综合久久综合亚洲| 亚洲国产日韩欧美久久| 久久久WWW成人免费毛片| 91久久精品国产91性色也| 久久国产高潮流白浆免费观看| 精品国产日韩久久亚洲| 狠狠色丁香婷婷久久综合| 亚洲伊人久久成综合人影院| 久久国产热这里只有精品| 99久久精品免费看国产| 色噜噜狠狠先锋影音久久| 精品国产一区二区三区久久| 欧美牲交A欧牲交aⅴ久久| 亚洲乱码中文字幕久久孕妇黑人| 久久久国产亚洲精品| 久久久久久久久波多野高潮| 国产亚洲精品久久久久秋霞| 亚洲va中文字幕无码久久不卡| 伊人久久综合精品无码AV专区| 中文字幕久久精品无码| 久久亚洲精品中文字幕| 久久91亚洲人成电影网站|