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
为指针算术,导致指向在索引h
处的元素的指针。 sort(b, h)
对从元素h
指向的头b
元素进行排序,这是数组的前半部分。 sort(b + h, n - h)
对从数组n - h
指向的元素开始的b + h
元素进行排序,这是数组的下半部分。