package sort; import java.util.Arrays; public class MergeSort { public static void main(String[] args) { int[] arr = {6,4,8,1,5}; int[] temp = new int[5]; mergeSort(arr,0,4,temp); System.out.println(Arrays.toString(arr)); } public static void mergeSort(int[] arr, int left, int right, int[] temp){ if (left < right){//只要不是剩一个元素就不停的拆分数组 int mid = (left + right)/2; mergeSort(arr, left, mid, temp); mergeSort(arr, mid+1, right, temp); merge(arr,left,mid,right,temp); } } //将arr[] 中的 left到mid mid+1到right 这两个数组排序后放入arr left到right public static void merge(int[] arr, int left, int mid, int right, int[] temp) { int i = left; int j = mid + 1; int t = 0; //从小到大放进temp里,直到一个数组放完 while (i<=mid && j<=right){ if (arr[i]<arr[j]){ temp[t] = arr[i]; t++; i++; }else { temp[t] = arr[j]; t++; j++; } } //将剩余的一个数组也放到temp里 while (i<=mid){ temp[t] = arr[i]; i++; t++; } while (j<=right){ temp[t] = arr[j]; j++; t++; } t = 0; int templeft = left; while (templeft<=right){ arr[templeft] = temp[t]; t++; templeft++; } } }
Java数据结构《排序算法》归并排序
最新推荐文章于 2024-07-07 15:18:22 发布