JAVA语言之归并排序

来源:互联网 发布:python正则表达式大全 编辑:程序博客网 时间:2024/05/18 16:39
package com.paixu;public class guibing {public static void main(String[] args) {   int[] A=new int[]{5,3,4,2,1};   A=guibing.mergeSort(A, 5);  for(int i=0;i<5;i++){  System.out.print(A[i]+" ");  }}public static int[] mergeSort(int[] A, int n) {        sort(A,0,n-1);        return A;    }public static void sort(int[] A,int low,int high){if(low<high){int middle=(low+high)/2;   //分左sort(A,low,middle);//分右sort(A,middle+1,high);//合并merge(A,low,middle,high);}}    public static void merge(int[] A,int low,int middle,int high){       int left=low;       int right=middle+1;       int aa=0;       int[] ss=new int[high-low+1];  //先将左右子数组其中一个数组排好序       while(left<=middle && right<=high){ if(A[left]<=A[right]){ ss[aa++]=A[left++]; }else{ ss[aa++]=A[right++]; }      }       //左子数组还有则自动排后面  while(left<=middle){  ss[aa]=A[left];  left++;  aa++;  }  //右子数组还有则自动排后面  while(right<=high){  ss[aa]=A[right];  right++;  aa++;  }       int temp=0;       while((temp+low)<=high){      A[temp+low]=ss[temp];      temp++;       }    }}

0 0