代码
public class Main {
public static void main(String[] args) {
int arr[] = {998, 7, 1, 2, 9, 3, 936, 5, 4, 6, 0};
mergeSort(arr,0,arr.length - 1,new int[arr.length]);
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);
}
}
public static void merge(int[] arr,int left,int mid,int right,int[] temp){
int i = left;//左边序列指针
int j = mid + 1;//右边序列指针
int t = 0;//临时数组指针
//向临时数组中添加数据
while (i <= mid && j <= right){
if (arr[i] < arr[j]){
//左边的数小于右边的数
temp[t] = arr[i];
i++;
t++;
}else {
//右边的数小于左边的数
temp[t] = arr[j];
t++;
j++;
}
}
//将左右两边剩下的元素加入temp
while (i <= mid){
temp[t] = arr[i];
i++;
t++;
}
while (j <= right){
temp[t] = arr[j];
t++;
j++;
}
//将临时数组赋值给arr
t = 0;
while (left <= right){
arr[left] = temp[t];
left++;
t++;
}
}
}
[0, 1, 2, 3, 4, 5, 6, 7, 9, 936, 998]
mergeSort函数是递归调用,其具体过程如下

这篇博客详细介绍了如何实现归并排序算法,通过递归将数组拆分成小部分,然后进行合并,最终得到有序数组。示例代码展示了如何在Java中应用归并排序对包含整数的数组进行排序,包括关键步骤如分割、合并以及临时数组的使用。排序后的数组为[0,1,2,3,4,5,6,7,9,936,998]。
1784

被折叠的 条评论
为什么被折叠?



