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

How to understand Merge sort Algorithm(Recursive)

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) 是什么意思??

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

在表达式 b + h 中,b 衰减为指向第一个元素的指针,而 b + h 是指针运算,其结果是指向索引 [= 处的元素的指针13=]。 sort(b, h)b 指向的元素开始对前 h 个元素进行排序,这是数组的前半部分。 sort(b + h, n - h)b + h 指向的元素开始对 n - h 元素进行排序,这是数组的后半部分。