比较简单,还是直接上代码吧。
package Sort;
import java.util.Arrays;
import java.util.Random;
public class MergeSort {
public void sort(int array[]){
if(array.length== 0 ||array.length == 1)
return;
int mid = array.length/2;
int a[] = Arrays.copyOfRange(array, 0, mid);
int b[] = Arrays.copyOfRange(array, mid, array.length);
sort(a);
sort(b);
merge(a,b,array);
}
public void merge(int[] a,int[] b,int [] array){
int i=0;
int j=0;
int k=0;
while (i<a.length && j<b.length){
if(a[i] < b[j]){
array[k]= a[i];
i++;
k++;
}else{
array[k]= b[j];
j++;
k++;
}
}
for(;i<a.length;++i){
array[k++] = a[i];
}
for(;j<b.length;++j){
array[k++] = b[j];
}
}
public int[] generateRandArray(int n){
int array[] = new int[n];
Random rand= new Random();
for (int i = 0; i < array.length; i++) {
array[i] = rand.nextInt();
}
return array;
}
public boolean isSorted(int [] array){
for(int i=0;i<array.length-1;i++){
if(array[i+1]<array[i])
return false;
}
return true;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int array[];
int i=0;
MergeSort mergeSort = new MergeSort();
array = mergeSort.generateRandArray(10000);
mergeSort.sort(array);
while(i<10000){
System.out.println(array[i]);
i++;
}
if(mergeSort.isSorted(array) == false){
System.out.println("error");
}else{
System.out.println("succeed");
}
}
}