import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n;
n = in.nextInt();
int[] a = new int[n];
for(int i=0;i<n;i++) {
a[i] = in.nextInt();
}
mergeSort(a,1,n);
for(int b:a)
System.out.print(b+" ");
}
public static void merge(int[] a,int p,int q,int r) {
int n1 = q - p + 1;
int n2 = r-q;
int[] L = new int[n1+1];
int[] R = new int[n2+1];
for(int i=0;i<n1;i++)
L[i] = a[p-1+i];
for(int i=0;i<n2;i++)
R[i] = a[q+i];
L[n1] = 10000000;
R[n2] = 10000000;
int i=0;
int j=0;
for(int k=p-1;k<r;k++) {
if(L[i]<=R[j]) {
a[k] = L[i];
i++;
}
else {
a[k] = R[j];
j++;
}
}
}
public static void mergeSort(int[] a,int p,int r) {
if(p<r) {
int q;
q = (p+r)/2;
mergeSort(a,p,q);
mergeSort(a,q+1,r);
merge(a,p,q,r);
}
}
}
算法导论:归并排序算法java实现
最新推荐文章于 2022-03-23 20:00:07 发布