如何理解合并排序算法(递归)

问题描述 投票:0回答:1
int sort(int a[],int n)
{
     int h;
     int b[n];
     h=n/2
     //copy a[] to b[]
     sort(b,n)
     sort(b+h, n-h)
     //merge two halves in b to a
     return;
}

在该代码中,我如何理解sort(b,h)sort(b + h,n-h)部分。 (b + h)是什么意思?

c++ sorting mergesort
1个回答
0
投票

数组可以衰减到指向第一个元素的指针。实际上,当您将数组传递给函数而不通过引用传递它时,实际上是在将指针传递给第一个元素。

[在表达式b + h中,b衰减为指向第一个元素的指针,并且b + h为指针算术,导致指向在索引h处的元素的指针。 sort(b, h)对从元素h指向的头b元素进行排序,这是数组的前半部分。 sort(b + h, n - h)对从数组n - h指向的元素开始的b + h元素进行排序,这是数组的下半部分。

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