• <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>

            [基礎(chǔ)算法復(fù)習(xí)]歸并排序


            static ? void ?_merge( int ? * src, int ?begin, int ?end);

            int ?merge_sort( int ? * array, int ?begin, int ?end)
            {
            ????
            if (array == NULL || begin > end)? return ? 0 ;

            ???
            int ?mid? = ?begin + (end - begin) / 2 ;
            ?? merge_sort(src,begin,mid);
            ?? merge_sort(src,mid
            + 1 ,end);
            ???_merge(src,begin,end);

            ??? return 1;
            }

            static ? void ?_merge( int ? * src, int ?begin, int ?end)
            {
            ????
            int ?mid? = ?begin + (end - begin) / 2 ;

            ????
            int ?b1? = ?begin;
            ????
            int ?e1? = ?mid;
            ????
            int ?b2? = ?mid + 1 ;
            ????
            int ?e2? = ?end;

            ????
            int ? * dest? = ?malloc( sizeof ( int ) * (end - begin + 1 ));
            ????
            if (dest == NULL)? return ;

            ????
            int ?i1;
            ????
            int ?i2;
            ????
            int ?i;
            ????
            for (i1 = b1,i2 = b2,i = begin;i1 <= e1 && i2 <= e2 && i <= end; ++ i){
            ????????
            if (src[i1] < src[i2]){
            ????????????dest[i
            - begin]? = ?src[i1];
            ????????????i1
            ++ ;
            ????????}
            else {
            ????????????dest[i
            - begin]? = ?src[i2];
            ????????????i2
            ++ ;
            ????????}
            ????}

            ????
            for (;i <= end && i1 <= e1; ++ i, ++ i1)
            ???????dest[i
            - begin]? = ?src[i1];
            ????
            for (;i <= end && i2 <= e2; ++ i, ++ i2)
            ???????dest[i
            - begin]? = ?src[i2];

            ????
            for (i = begin;i <= end; ++ i)
            ????????src[i]?
            = ?dest[i - begin];

            ????free(dest);
            }


            做一些小優(yōu)化,只創(chuàng)建一次臨時(shí)數(shù)組。
            void?_mergesort(int?*array,int?*tmp,int?start,int?end);

            void?mergesort(int?*array,int?len)
            {
            ????
            int?i,*tmp;

            ????
            if(array==NULL||len==0)
            ????????
            return;

            ????tmp?
            =?(int*)malloc(sizeof(int)*len);

            ????_mergesort(array,tmp,
            0,len-1);

            ??? free(tmp);
            }

            void?_mergesort(int?*array,int?*tmp,int?start,int?end)
            {
            ????
            int?mid?=?(start+end)/2;
            ????
            int?i,j,k;

            ????
            if(start>=end)
            ????????
            return;
            ????
            ????_mergesort(array,tmp,start,mid);
            ????_mergesort(array,tmp,mid
            +1,end);

            ???i?
            =?start;
            ???j?
            =?mid+1;

            ???
            for(k=start;k<=end&&i<=mid&&j<=end;++k){
            ???????
            if(array[i]<array[j]){
            ???????????tmp[k]?
            =?array[i];
            ???????????i
            ++;
            ???????}
            else{
            ???????????tmp[k]
            =?array[j];
            ???????????j
            ++;
            ???????}
            ???}

            ???
            for(;i<=mid;++i)
            ???????tmp[k
            ++]=array[i];

            ???
            for(;j<=end;++j)
            ???????tmp[k
            ++]=array[j];
            ??????
            ??memcpy(
            &array[start],&tmp[start],sizeof(int)*(end-start+1));?
            }
            ???

            posted on 2009-07-15 11:46 YZY 閱讀(260) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Algorithm 、基礎(chǔ)算法

            導(dǎo)航

            <2025年8月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            統(tǒng)計(jì)

            常用鏈接

            留言簿(2)

            隨筆分類

            隨筆檔案

            搜索

            積分與排名

            最新評(píng)論

            閱讀排行榜

            91精品国产综合久久香蕉| 国产精品99久久精品| 婷婷久久五月天| 亚洲AV乱码久久精品蜜桃| 久久国产成人精品麻豆| 亚洲欧美另类日本久久国产真实乱对白 | 亚洲精品成人久久久| 国产精品对白刺激久久久| 久久久久国色AV免费看图片| 99久久做夜夜爱天天做精品| 狠狠色丁香久久综合五月| 久久午夜夜伦鲁鲁片免费无码影视| 久久99精品久久久久久hb无码| 久久久久久久综合综合狠狠| 久久综合给合久久狠狠狠97色69| 久久本道综合久久伊人| 久久国产精品一国产精品金尊| 久久久久久久综合狠狠综合| 色诱久久久久综合网ywww| 亚洲伊人久久成综合人影院| 99久久精品免费| 狠狠久久亚洲欧美专区| 久久久久人妻精品一区二区三区| 亚洲精品乱码久久久久久不卡| 国产真实乱对白精彩久久| 国产韩国精品一区二区三区久久| 久久久无码精品亚洲日韩京东传媒| 久久午夜无码鲁丝片午夜精品| 四虎国产精品免费久久久| 久久国产精品无码HDAV| 97精品国产91久久久久久| 色狠狠久久AV五月综合| 久久天天躁狠狠躁夜夜网站| 亚洲va国产va天堂va久久| 综合久久国产九一剧情麻豆| 国内高清久久久久久| 久久久久免费看成人影片| 丰满少妇人妻久久久久久| 久久国产精品99久久久久久老狼| 99久久精品国产高清一区二区| 久久国产高潮流白浆免费观看|