虽然已经有现成的sort方法可以用,但考虑到我连Java的基础语法都不熟练,加上归并排序还有求逆序对数的功能,我又按照c的模式照葫芦画瓢写了一个Java版的归并。目的是熟练一下Java,自测能够正常运行,但这样写Java是否规范还需要日后慢慢学习研究。
/*归并排序的Java实现*/
import java.util.*;
public class gbpx {
public static int[] number=new int[100];
public static int[] number1=new int[100];
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int n;
n=sc.nextInt();
for(int i=1;i<=n;i++){
number[i]=sc.nextInt();
}
gb(1,n);
//System.out.println(Arrays.toString(number));
//另一种输出方式
for(int i=1;i<=n;i++) {
System.out.print(number[i]);
System.out.print(" ");
}
}
public static void gb(int m,int n){
if(m==n) return;
int p,t;
p=(m+n)/2;
gb(m,p);
gb(p+1,n);
int i,j;
i=m;j=p+1;t=m;
while(i<=p&j<=n){
if(number[i]<number[j])
number1[t++]=number[i++];
else
number1[t++]=number[j++];
}
while(i<=p) number1[t++]=number[i++];
while(j<=n) number1[t++]=number[j++];
for(i=m;i<=n;i++)
number[i]=number1[i];
return;
}
}