package sort;public class MergeSort {
public static void merge(int array[],int p,int q,int r){
int num1=q-p+1;
int num2=r-q;
int array1[]=new int[num1+1];
int array2[]=new int[num2+1];
for(int i=0;i<array1.length;i++){
array1[i]=array[p+i];
}
for(int i=0;i<array2.length;i++){
array2[i]=array[q+i+1];
}
array1[num1]=65535;
array2[num2]=65535;
int m=0;
int n=0;
for(int k=p;k<=r;k++){
if(array1[m]<array2[n]){
array[k]=array1[m];
if(m<array1.length){
m=m+1;
}
}else{
array[k]=array2[n];
if(n<array2.length){
n=n+1;
}
}
}
}
public static void mergeSort(int array[],int p,int r){
if(r>p){
int q=(int)((r-p)/2);
mergeSort(array,p,q);
mergeSort(array,q+1,r);
merge(array,p,q,r);
}
}
public static void main(String agrs[]){
int array[]=new int[10000];
for(int i=0;i<array.length;i++){
array[i]=(int) (Math.random()*10000);
}
mergeSort(array,0,9999);
for(int i=0;i<array.length;i++){
System.out.println(array[i]);
}
}}
这是我写的一段排序代码,但是调试了好久,总是在运行时抛出堆栈溢出的异常,查了好久也没有发现到底是什么原因。希望各位高手帮忙看看到底什么地方出了问题。万分感谢。