首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c++中的合并排序

c++中的合并排序
EN

Stack Overflow用户
提问于 2020-05-27 19:37:48
回答 3查看 294关注 0票数 1

在竞争性编码中,我有一个问题要编码合并排序,我知道如何用三个参数来编码合并排序

代码语言:javascript
复制
merge_sort(int arr[],int left,int right)
{
     \\rest of code
}

但问题是

代码语言:javascript
复制
merge_sort(int arr[],int size)
{
     \\rest of code
}

如何对两个参数执行合并排序?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-05-27 19:45:43

你可以这么做:

代码语言:javascript
复制
merge_sort(int arr[],int size)
{
     merge_sort(arr, 0,size-1) // merge_sort(int arr[],int left,int right)
}

现在,从2参数1调用3参数函数。

票数 2
EN

Stack Overflow用户

发布于 2020-05-27 19:41:06

您可以调用此函数。

代码语言:javascript
复制
merge_sort(int arr[],int size)
{
     \\rest of code
}

从这一职能

代码语言:javascript
复制
merge_sort(int arr[],int left,int right)
{
     \\rest of code
}

喜欢

代码语言:javascript
复制
merge_sort( arr + left, right - left + 1 );

在这种情况下,相对于第二个函数,参数left将等于0,而参数右将由于将指针移动到数组的所需部分而等于right - left + 1

因此,第一个函数可以使用适当的参数和指针算法来替代第二个函数。

也可以从第一个函数调用第二个函数,如

代码语言:javascript
复制
merge_sort( arr, 0, size - 1 );
票数 3
EN

Stack Overflow用户

发布于 2020-05-27 19:47:04

int arr[]看起来像一个数组,但它不是。记住,数组在传递给函数时会衰减为指向第一个元素的指针。第一种方法使用:

代码语言:javascript
复制
-------------------------------------
|                 |             |
arr(pointer)      left(index)   right(index)

而第二种方法同样适用于:

代码语言:javascript
复制
-------------------------------------
                  |<-- size  -->|
                  arr          
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62051475

复制
相关文章

相似问题

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