【问题标题】:MergeSort using recursion使用递归进行合并排序
【发布时间】:2017-11-21 17:31:42
【问题描述】:

我是一名初学者,正在尝试学习递归,我尝试在 Stackoverflow 中阅读教程和旧问答以更好地理解,但无法... 任何人都可以通过使用以下 MergeSort sn-p 来启发我递归的工作原理。

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..}
  }   

【问题讨论】:

  • 递归的工作原理是一遍又一遍地对数据子集调用相同的方法,直到您将较大的任务分解为单个任务。看一个阶乘的例子。这是一个完美的代码示例,通过简单的解决方案解释了递归的基本概念。
  • @MichaelPlatt 简单解释!谢谢...

标签: java recursion mergesort


【解决方案1】:

我不会太接近 sn-p - 理解一般概念更重要。

  • 只有一项的数组“默认”排序。这是用于终止递归的条件,这里是if (low&gt;=high)...
  • 包含多个元素的数组被分成左半部分和右半部分。通过递归调用mergeSort 对每一半进行排序
  • 在对每一半进行排序后,需要将它们合并,在您的情况下,通过调用 merge

【讨论】:

    猜你喜欢
    • 2014-03-20
    • 1970-01-01
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 2019-01-22
    相关资源
    最近更新 更多