import java.util.Arrays;
public class MergeSort {
public static void main(String[] args) {
int arr[] = {8,4,5,7,1,3,6,2};
int[] tmp = new int[arr.length];
mergeSort(arr, 0, arr.length-1, tmp);
System.out.println(Arrays.toString(arr));
}
public static void mergeSort(int[] arr, int left, int right, int[] tmp){
if(left < right){
int mid = (left + right)/2;
mergeSort(arr, left, mid, tmp);
mergeSort(arr, mid+1, right, tmp);
merge(arr, left, mid, right,tmp);
}
}
public static void merge(int[] arr, int left, int mid, int right, int[] tmp){
int i = left;
int j = mid + 1;
int t = 0;
while(i<=mid && j<=right){
if(arr[i] <= arr[j]){
tmp[t] = arr[i];
t++;
i++;
}else{
tmp[t] = arr[j];
t++;
j++;
}
}
while(j<=right){
tmp[t] = arr[j];
j++;
t++;
}
while(i<=mid){
tmp[t] = arr[i];
i++;
t++;
}
//System.out.println(Arrays.toString(tmp));
//System.out.println("left="+left+" rigth="+right+" mid="+mid);
int tmpLeft = left;
t = 0;
while(tmpLeft <= right){
arr[tmpLeft] = tmp[t];
tmpLeft++;
t++;
}
//System.out.println("--"+Arrays.toString(arr));
}
}
数据结构:归并排序(Merge sort)
猜你喜欢
转载自blog.csdn.net/m0_37564426/article/details/104204347
今日推荐
周排行