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++;
}
}
}
JAVA语言之归并排序
最新推荐文章于 2023-12-11 10:45:47 发布