public class Main{ public static void main(String[] args){ int[] A = {5,2,6,3,1,10,9}; mergeSort(A, 0, A.length - 1); for(int i = 0; i < A.length; i++){ System.out.print(A[i] + " "); } System.out.println(); } public static void mergeSort(int[] A, int left, int right){ if(left < right){ int mid = left + (right - left) / 2; mergeSort(A, left, mid); mergeSort(A, mid + 1, right); merge(A, left, mid, right); } } public static void merge(int[] A, int left, int mid, int right){ int lenL = mid - left + 1; int lenR = right - mid; int[] AL = new int[lenL + 1]; int[] AR = new int[lenR + 1]; for(int i = 0; i < lenL; i++){ AL[i] = A[left + i]; } for(int i = 0; i < lenR; i++){ AR[i] = A[mid + i + 1]; } AL[lenL] = Integer.MAX_VALUE; AR[lenR] = Integer.MAX_VALUE; int i = 0, j = 0; for(int k = left; k <= right; k ++){ if(AL[i] <= AR[j]){ A[k] = AL[i]; i ++; } else{ A[k] = AR[j]; j ++; } } } }
输出:
1 2 3 5 6 9 10