代码
public class MergeSort {
public static void main(String[] args) {
int[] arr = new int[80000000];
int[] temp = new int[arr.length];
for (int i = 0; i < arr.length; i++) {
arr[i] = (int)(Math.random() * 8000000);
}
long start = System.currentTimeMillis();
mergeSort(arr, 0, arr.length - 1, temp);
long end = System.currentTimeMillis();
System.out.println("总共花费:" + (end - start));
}
public static void mergeSort(int[] arr,int left,int right,int[] temp){
if(left < right){
int mid = (left + right) / 2;
mergeSort(arr, left, mid, temp);
mergeSort(arr, mid + 1, right, temp);
merge(arr, left, mid, right, temp);
}
}
public static void merge(int[] arr,int left,int mid,int right,int[] temp){
int i = left;
int j = mid + 1;
int t = 0;
while(i <= mid && j <= right){
if(arr[i] < arr[j]){
temp[t] = arr[i];
i += 1;
t += 1;
}else{
temp[t] = arr[j];
j += 1;
t += 1;
}
}
while(i <= mid){
temp[t] = arr[i];
i += 1;
t += 1;
}
while(j <= right){
temp[t] = arr[j];
j += 1;
t += 1;
}
t = 0;
int tempLeft = left;
while(tempLeft <= right){
arr[tempLeft] = temp[t];
t += 1;
tempLeft += 1;
}
}
}
效率