1 package heapSort;
2
3 public class MergeSort {
4 public static void main(String[] args) {
5 int[]array={11,10,22,21,45,32,99,88,77,66,101,33};
6 mergeSort(array,0,array.length-1);
7 for(int i=0;i<array.length;i++){
8 System.out.print(array[i]+" ");
9 }
10 }
11 private static void mergeSort(int[] array,int left,int right){
12 int mid = (left + right) / 2;
13 if (left < right) {
14 // 左边
15 mergeSort(array, left, mid);
16 // 右边
17 mergeSort(array, mid + 1, right);
18 // 左右归并
19 merge(array, left, mid, right);
20 }
21 }
22 private static void merge(int[] array,int left,int mid,int right){
23 int lIndex=left;
24 int rindex=mid+1;
25 int index=0;
26 int[] result=new int[right-left+1];
27 while(lIndex<=mid&&rindex<=right){
28 if(array[lIndex]<array[rindex]){
29 result[index++]=array[lIndex++];
30 }else{
31 result[index++]=array[rindex++];
32 }
33 }
34 while(lIndex<=mid){
35 result[index++]=array[lIndex++];
36 }
37 while(rindex<=right){
38 result[index++]=array[rindex++];
39 }
40 for(int i=0;i<result.length;i++){
41 array[left+i]=result[i];
42 }
43 }
44 }