如何理解归并排序算法(递归)
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
元素进行排序,这是数组的后半部分。
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
元素进行排序,这是数组的后半部分。