无风无影

   ::  :: 新随笔  ::  ::  :: 管理

归并排序

 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 }
View Code

 

posted on 2018-05-28 23:57  NWNS-无风无影  阅读(107)  评论(0)    收藏  举报