合并排序过程

问题描述 投票:0回答:1

所以,我试图了解归并排序国税发算法的实现,但我不能让我的周围如何的过程中开始流向头,而它具有的阵列划分。下面的排序算法

void sort(int arr[], int l, int r) 
{ 
    if (l < r) 
    { 
        // Find the middle point 
        int m = (l+r)/2; 

        // Sort first and second halves 
        sort(arr, l, m);          //talking about 
        sort(arr , m+1, r);       //this part 

        // Merge the sorted halves 
        merge(arr, l, m, r); 
    } 

这使我脑海唯一模型分支阵列是这样(考虑数组{48,34,4,1}):

m(a, l(0), r(3));
  m(a, l(0), m(1));
    m(a, l(0), m(0));
    m(a, m+1(1), r(1));
  m(a, m+1(2), r(3));
    m(a, l(2), m(2));
    m(a, m+1(3), r(3);

这是其中的呼叫被完成的顺序?要求:

    sort(arr, l, m);      
    sort(arr , m+1, r);

此外,我不明白为什么当方法参数不满足if条件(l<r)算法跳回阵列的另一侧,并那种。

java sorting recursion mergesort
1个回答
0
投票

在递归的某个时刻,某种(...)不会做任何事情,只是返回(因为升== r)和2排序(...)方法来完成。在这之后,合并进入行动,这确实没有什么比把2个元素以正确的顺序。在此之后发生的事情,从以前的调用一些其他类型的(...)方法完成等。

© www.soinside.com 2019 - 2024. All rights reserved.