1 package cn.sun.it.review;
2
3 import java.util.Arrays;
4
5 public class MergeSort {
6
7 public static void main(String[] args) {
8 int[] arr = {49,38,65,97,76,13,27};
9 mergeSort(arr,0,arr.length-1);
10 System.out.println(Arrays.toString(arr));
11 }
12
13 private static void mergeSort(int[] arr, int low, int high) {
14 if(low < high){
15 int mid = (low+high)/2;
16 mergeSort(arr,low,mid);
17 mergeSort(arr,mid+1,high);
18 merge(arr,low,mid,high);
19 }
20 }
21
22 // 归并操作
23 private static void merge(int[] arr, int low, int mid, int high) {
24 int i,j,k;
25 int n1 = mid-low+1;
26 int n2 = high-mid;
27 int[] arr1 = new int[n1];
28 int[] arr2 = new int[n2];
29 for(i=0;i<n1;i++){
30 arr1[i] = arr[low+i];
31 }
32 for(j=0;j<n2;j++){
33 arr2[j] = arr[mid+1+j];
34 }
35 i=0;
36 j=0;
37 k = low;
38 while(i<n1 && j<n2){
39 if(arr1[i] <= arr2[j]){
40 arr[k] = arr1[i++];
41 }else{
42 arr[k] = arr2[j++];
43 }
44 k++;
45 }
46 while(i<n1){
47 arr[k++] = arr1[i++];
48 }
49 while(j<n2){
50 arr[k++] = arr2[j++];
51 }
52 }
53
54 }