首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我不了解merge_sort排序算法和函数调用的递归实现

我不了解merge_sort排序算法和函数调用的递归实现
EN

Stack Overflow用户
提问于 2021-08-11 00:46:51
回答 1查看 39关注 0票数 0

这是一个用C编程语言实现的函数mergeSort,当我们递归地调用第5行和第6行中的函数merge_sort时,它们是并行工作的,或者是第一个执行任务的函数,其余的代码行被暂停了?,第8行呢,它也与它们并行工作?

代码语言:javascript
运行
复制
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);
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-11 07:47:37

所有程序逐行执行。除非您执行代码显然没有的多线程操作,否则不会有任何并行机制。

第5行将在第4行之后执行。

第6行将在第5行之后执行。

第7行将在第6行之后执行。

第8行将在第7行之后执行。

如果您不相信代码实际上是执行一行一行。在这里,我将提供一个例子。

代码语言:javascript
运行
复制
// 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;
}

输出:

代码语言:javascript
运行
复制
1 2
1 1
1 0
2 2
2 1
2 0

现在很清楚,print(1,2)使在打印(2,2)之前完全执行

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68734804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档