这是一个用C编程语言实现的函数mergeSort,当我们递归地调用第5行和第6行中的函数merge_sort时,它们是并行工作的,或者是第一个执行任务的函数,其余的代码行被暂停了?,第8行呢,它也与它们并行工作?
1- void mergeSort(int arr[], int l, int r)
2- {
3-if (l < r) {
4 - int m = l + (r - l) / 2;
5 - // Sort first and second halves
6 - mergeSort(arr, l, m);
7 - mergeSort(arr, m + 1, r);
8 - merge(arr, l, m, r);
}
}发布于 2021-08-11 07:47:37
所有程序逐行执行。除非您执行代码显然没有的多线程操作,否则不会有任何并行机制。
第5行将在第4行之后执行。
第6行将在第5行之后执行。
第7行将在第6行之后执行。
第8行将在第7行之后执行。
如果您不相信代码实际上是执行一行一行。在这里,我将提供一个例子。
// a recursive function, like mergeSort
void print(int i, int j) {
printf("%d %d\n", i, j);
if (j > 0) print(i, j - 1);
}
int main() {
print(1, 2);
print(2, 2);
return 0;
}输出:
1 2
1 1
1 0
2 2
2 1
2 0现在很清楚,print(1,2)使在打印(2,2)之前完全执行。
https://stackoverflow.com/questions/68734804
复制相似问题