Java 使用递归合并排序
我是一名初学者,正在尝试学习递归,我曾尝试在Stackoverflow中阅读教程和老问答,以便更好地理解,但无法。。 有人能通过使用下面的MergeSort片段来告诉我递归是如何工作的吗Java 使用递归合并排序,java,recursion,mergesort,Java,Recursion,Mergesort,我是一名初学者,正在尝试学习递归,我曾尝试在Stackoverflow中阅读教程和老问答,以便更好地理解,但无法。。 有人能通过使用下面的MergeSort片段来告诉我递归是如何工作的吗 public class MergeSort{ public static void main(String a[]){ int [] array={5,2,8,4,7,3,9,1}; mergeSort(array,0, array.length-1); for(int i = 0; i &l
public class MergeSort{
public static void main(String a[]){
int [] array={5,2,8,4,7,3,9,1};
mergeSort(array,0, array.length-1);
for(int i = 0; i < array.length; i++)
{
System.out.print(array[i]+" ");
System.out.println();
}
}
public static void mergeSort(int array[],int low, int high){
if (low >= high)
{
return;
}
int middle = (low + high) / 2;
mergeSort(array, low, middle);
mergeSort(array, middle + 1, high);
merge(array, low,middle,high);
}
public static void merge(int arr[],int l,int m,int h)
{ \\Remaining Code goes here..}
}
公共类合并排序{
公共静态void main(字符串a[]{
int[]数组={5,2,8,4,7,3,9,1};
合并排序(数组,0,数组。长度-1);
for(int i=0;i=高)
{
回来
}
int-middle=(低+高)/2;
合并排序(数组、低、中);
合并排序(数组,中间+1,高);
合并(数组、低、中、高);
}
公共静态无效合并(int arr[],int l,int m,int h)
{\\n剩余的代码在这里..}
}
我不会太过关注这个片段,更重要的是要理解一般概念
- 只有一项的数组“默认”排序。这是用于终止递归的条件,这里是
if(low>=high).
- 包含多个元素的数组被拆分为左半部分和右半部分。通过递归调用
mergeSort
- 在对每个半部分进行排序后,需要通过调用
对它们进行合并merge