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++;
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)