積少成多

          垃圾堆

            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)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 吴江市| 石首市| 溧水县| 芦山县| 分宜县| 保定市| 蓝山县| 丹寨县| 江北区| 永平县| 宕昌县| 阿克苏市| 星座| 昌都县| 齐河县| 临朐县| 南通市| 曲松县| 仙桃市| 苍南县| 麻阳| 中山市| 浦东新区| 伊宁市| 双鸭山市| 日喀则市| 长泰县| 丽江市| 如皋市| 安乡县| 科尔| 绥滨县| 泸州市| 山阳县| 东丽区| 桐乡市| 安阳市| 上杭县| 方城县| 红安县| 固始县|