package org.example.algorithm;import java.util.Arrays;public class mergeSort { // 归并 public static void merge(int[] a, int low, int mid,int high){ int[] tmp = new int[high - low + 1]; //创建临时数组存储排序好的数字 int i = low; int j = mid+1; int k = 0; while (i <= mid && j <= high){ //从小到大排序 if(a[i]<= a[j]){ tmp[k++] = a[i++]; } else { tmp[k++] = a[j++]; } } //剩余未排序完的数字直接拼接到数组后 while (i <= mid){ tmp[k++]=a[i++]; } while (j <= high){ tmp[k++]=a[j++]; } //返回排序好的数组,即用数组tmp覆盖数组a for (int l = 0; l < tmp.length; l++) { a[l+low]=tmp[l]; } } //归并排序 public static void mergeSort(int[] a, int low, int high) { int mid=(high+low)/2; if (low<high){ mergeSort(a,low,mid); mergeSort(a,mid+1,high); merge(a,low,mid,high); System.out.println(Arrays.toString(a)); } } public static void main(String[] args) { int a[] = { 51, 46, 20, 18, 65, 97, 82, 30, 77, 50 }; mergeSort(a, 0, a.length - 1); System.out.println("排序结果:" + Arrays.toString(a)); }}