JAVA 合并排序(递归算法)

JAVA 合并排序(递归算法)

                                 合并排序,递归算法,利用分治策略

+————————————————-code————————————————————–+

 // 合并排序,递归算法,利用分治策略 //
import java.util.Scanner;
public class mergeSort {
        public static void MergeSort(int a[],int left,int right)
        { if(left<right)
         {  //至少需要两个元素
          int mid=(left+right)/2;  //对左侧排序
          MergeSort(a,left,mid);  //对右侧排序
          MergeSort(a,mid+1,right);
          //合并两段排序数组到数组b中,再拷贝回a中
          merge(a,left,mid,right);      
         }
        }   
        private static void merge(int c[],int left,int mid,int right)
        { //合并两段排序数组到数组d中
         int d[]=new int[right-left+1];
         int i,j,k=0; //k为d数组的下标
         i=left;
         j=mid+1;
         while(i<=mid && j<=right)
         { if(c[i]>c[j]) { d[k]=c[j]; k++; j++;}
           else          { d[k]=c[i];k++;i++;}
         }
         for(int q=j;q<=right;q++)
              {d[k]=c[q];k++; } 
         for(int q=i;q<=mid;q++)  
              {d[k]=c[q];k++; }
         //将d中数组再拷贝回c中
         int pos=left;
         for(k=0;k<=d.length-1;k++)
              { c[pos]=d[k]; pos++;}
        }
        public static void main(String[] args) {
             System.out.println(” +— 合并排序,递归算法  —+ \n 数组长度: “);
             Scanner reader= new Scanner(System.in);
       int len=reader.nextInt();
           int a[]=new int[len];//初始化a数组 
           System.out.println(“随机生成的数组如下:”);
           for(int i=0;i<a.length;i++)
               {a[i] = (int)(Math.random()*1000); //产生len个随机数 (<1000)
                System.out.println(a[i]); }
         MergeSort(a,0,a.length-1);
           System.out.println(“排序后的数组如下:”);
           for(int i=0;i<a.length;i++)
           { System.out.println(a[i]); }        
          }       }

 

+————————————————-code————————————————————–+

《JAVA 合并排序(递归算法)》

    原文作者:递归算法
    原文地址: https://blog.csdn.net/xiao_peter/article/details/20552271
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞