Java 使用递归合并排序

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

我是一名初学者,正在尝试学习递归,我曾尝试在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 < 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
    对它们进行合并

此处检查-递归的工作原理是对数据子集反复调用相同的方法,直到将较大的任务分解为单个任务为止。看一个阶乘的例子。这是一个通过简单的解决方案解释递归基本概念的完美代码示例。@MichaelPlatt simple Explation!非常感谢。