<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      遞歸算法學(xué)習(xí)系列二(歸并排序)

            歸并排序是利用遞歸和分而治之的技術(shù)將數(shù)據(jù)序列劃分成為越來越小的半子表,再對(duì)半子表排序,最后再用遞歸步驟將排好序的半子表合并成為越來越大的有序序列,歸并排序包括兩個(gè)步驟,分別為:

            1)劃分子表

            2)合并半子表 

           首先我們來討論歸并算法,歸并算法將一系列數(shù)據(jù)放到一個(gè)向量中,索引范圍為[first,last],這個(gè)序列由兩個(gè)排好序的子表構(gòu)成,以索引終點(diǎn)(mid)為分界線,以下面一個(gè)序列為例

          7,10,19,25,12,17,21,30,48

         這樣的一個(gè)序列中,分為兩個(gè)子序列 7,10,19,25  和 12,17,21,30,48,如下圖所示:

         image 

      再使用歸并算法的時(shí)候的步驟如下:

       第一步:比較v[indexA]=7和v[indexB]=12,將較小的v[indexA]取出來放到臨時(shí)向量tempArray中,然后indexA加1

        image

       

       第二步:比較v[indexA]=10和v[indexB]=12,將較小的10放到臨時(shí)變量tempArray中,然后indexA++;

        image

      第三步:比較v[indexA]=19與v[indexB]=12,將較小的12存放到臨時(shí)變量tempArray中,然后indexB++;

         image

      第四步到第七步:按照以上規(guī)則,進(jìn)行比對(duì)和存儲(chǔ),得到如下結(jié)果:

         image

      最后一步:將子表b中剩余項(xiàng)添加到臨時(shí)向量tempArray中

         image 

      然后將臨時(shí)變量中的值按照索引位置,拷貝回向量v中,就完成了對(duì)向量v的歸并排序

       算法函數(shù)為:

      public void Merger(int[] v, int first, int mid, int last)
             {
                 Queue<int> tempV = new Queue<int>();
                 int indexA, indexB;
                 //設(shè)置indexA,并掃描subArray1 [first,mid]
                 //設(shè)置indexB,并掃描subArray2 [mid,last]
                 indexA = first;
                 indexB = mid;
                 //在沒有比較完兩個(gè)子標(biāo)的情況下,比較 v[indexA]和v[indexB]
                 //將其中小的放到臨時(shí)變量tempV中
                 while (indexA < mid && indexB < last)
                 {
                     if (v[indexA] < v[indexB])
                     {
                         tempV.Enqueue(v[indexA]);
                         indexA++;
                     }
                     else
                     {
                         tempV.Enqueue(v[indexB]);
                         indexB++;
                     }
                 }
                 //復(fù)制沒有比較完子表中的元素
                 while (indexA < mid)
                 {
                     tempV.Enqueue(v[indexA]);
                     indexA++;
                 }
                 while (indexB < last)
                 {
                     tempV.Enqueue(v[indexB]);
                     indexB++;
                 }
                 int index = 0;
                 while (tempV.Count > 0)
                 {
                     v[first+index] = tempV.Dequeue();
                     index++;
                 }
             }

       

         實(shí)現(xiàn)歸并排序;歸并排序算法分為兩步,第一步:先將原來的數(shù)據(jù)表分成排好序的子表,然后調(diào)用 Merger  對(duì)子表進(jìn)行歸并,使之成為有序表,例如有如下向量:

        25,10,7,19,3,48,12,17,56,30,21

      對(duì)此序列進(jìn)行歸并排序的步驟為:

         image

      歸并算法函數(shù)為

      public void MergerSort(int[] v, int first, int last)
             {
                 if (first + 1 < last)
                 {
                     int mid = (first + last) / 2;
                     MergerSort(v, first, mid);
                     MergerSort(v, mid, last);
                     Merger(v, first, mid, last);
                 }
             }

       

      歸并算法的劃分子表和歸并子表與原數(shù)據(jù)序列次序無關(guān),因此算法的最壞情況,最壞情況和平均情況時(shí)間復(fù)雜度是一樣的

      下面是歸并算法的函數(shù)調(diào)用圖

             image

      示例程序: /Files/jillzhang/MergerSort.rar



      -------------------------------------------------------
      人老了,腦袋不好用了,偶爾用算法來練練腦子,可以防止早衰。呵呵
                                                              jillzhang jillzhang@126.com

      posted @ 2007-09-16 18:53  Robin Zhang  閱讀(73694)  評(píng)論(12)    收藏  舉報(bào)
      主站蜘蛛池模板: 日韩人妻无码一区二区三区 | 婷婷开心深爱五月天播播| 国产成人精品无码播放| 国产成人无码| 福利一区二区在线视频| 99精品国产丝袜在线拍国语| 亚洲中文久久久精品无码| 中文字幕第一页国产| 国语精品自产拍在线观看网站| 久久久国产乱子伦精品作者| 久久久精品2019中文字幕之3| 国产成人高清亚洲一区二区| 本免费Av无码专区一区| 无码日韩av一区二区三区| 她也色tayese在线视频| 99精品视频在线观看婷婷| 夜夜躁狠狠躁日日躁| 熟女在线视频一区二区三区| 日本不卡片一区二区三区| 亚洲中文字幕伊人久久无码 | 亚洲欧洲∨国产一区二区三区| 阳东县| 337p日本欧洲亚洲大胆色噜噜| 国产无遮挡裸体免费久久| 中文字幕亚洲无线码一区女同| 亚洲欧洲日韩国内高清| 久久久久噜噜噜亚洲熟女综合| 午夜福利偷拍国语对白| 五月婷婷中文字幕| 国产一区二区不卡91| 亚洲欧美一区二区三区在线| 久久大香线蕉国产精品免费 | 亚洲永久精品日本久精品| 色综合视频一区二区三区| 丁香五月亚洲综合深深爱| 国产高清精品在线一区二区| 中文精品无码中文字幕无码专区 | 日本不卡一区| 亚洲天堂成人黄色在线播放| 在线涩涩免费观看国产精品| 麻豆国产va免费精品高清在线 |