積少成多

          垃圾堆

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            29 Posts :: 1 Stories :: 5 Comments :: 0 Trackbacks
          算法思想是每次把待排序列分成兩部分,分別對這兩部分遞歸地用歸并排序,完成后把這兩個子部分合并成一個
          序列。

          import
           java.lang.reflect.Array;
          public class MergeSorter<extends Comparable<E>> extends Sorter<E>{
              @SuppressWarnings(
          "unchecked")
              @Override
              
          public void sort(E[] array, int from, int len){
                  
          if(len<=1return;
                  E[] temporary
          =(E[])Array.newInstance(array[0].getClass(),len);
                  merge_sort(array,from,from
          +len-1,temporary);
              }
              
          private final void merge_sort(E[] array, int from, int to,E[] temporary){
                  
          if(to<=from) return;
                  
          int middle=(from+to)/2;
                  merge_sort(array,from,middle,temporary);
                  merge_sort(array,middle
          +1,to,temporary);
                  merge(array,to,middle,temporary);
              }
              
          private final void merge(E[] array, int from, int to, int middle,E[] temporary){
                  
          int k=0, leftIndex=0,rightIndex=to-from;
                  System.arraycopy(array,from,temporary,
          0,middle-from+1);
                  
          for(int i=0;i<to-middle;i++){
                      temporary[to
          -from-i]=array[middle+i+1];
                  }
                  
          while(k<to-from+1){
                      
          if(temporary[leftIndex].compareTo(temporary[rightIndex])<0){
                          array[k
          +from]=temporary[leftIndex++];
                      }
          else{
                          array[k
          +from]=temporary[rightIndex--];
                      }
                      k
          ++;
                  }
              }
          }
          posted on 2011-05-27 09:59 思無 閱讀(196) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 南乐县| 曲靖市| 玉林市| 金平| 枣强县| 大连市| 南宁市| 岐山县| 仲巴县| 衡南县| 漠河县| 加查县| 军事| 穆棱市| 乐业县| 理塘县| 灵武市| 黄大仙区| 遂川县| 新泰市| 当阳市| 内乡县| 武夷山市| 民县| 宁阳县| 新安县| 上犹县| 赞皇县| 蒲城县| 台江县| 安吉县| 汾阳市| 简阳市| 广东省| 乌拉特后旗| 阿拉善盟| 明星| 阜南县| 宝鸡市| 斗六市| 鹿邑县|