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 }
浙公网安备 33010602011771号