太自由

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

 

 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 }

 

posted on 2021-04-09 14:01  太自由  阅读(56)  评论(0)    收藏  举报