在竞争性编码中,我有一个问题要编码合并排序,我知道如何用三个参数来编码合并排序
merge_sort(int arr[],int left,int right)
{
\\rest of code
}但问题是
merge_sort(int arr[],int size)
{
\\rest of code
}如何对两个参数执行合并排序?
发布于 2020-05-27 19:45:43
你可以这么做:
merge_sort(int arr[],int size)
{
merge_sort(arr, 0,size-1) // merge_sort(int arr[],int left,int right)
}现在,从2参数1调用3参数函数。
发布于 2020-05-27 19:41:06
您可以调用此函数。
merge_sort(int arr[],int size)
{
\\rest of code
}从这一职能
merge_sort(int arr[],int left,int right)
{
\\rest of code
}喜欢
merge_sort( arr + left, right - left + 1 );在这种情况下,相对于第二个函数,参数left将等于0,而参数右将由于将指针移动到数组的所需部分而等于right - left + 1。
因此,第一个函数可以使用适当的参数和指针算法来替代第二个函数。
也可以从第一个函数调用第二个函数,如
merge_sort( arr, 0, size - 1 );发布于 2020-05-27 19:47:04
int arr[]看起来像一个数组,但它不是。记住,数组在传递给函数时会衰减为指向第一个元素的指针。第一种方法使用:
-------------------------------------
| | |
arr(pointer) left(index) right(index)而第二种方法同样适用于:
-------------------------------------
|<-- size -->|
arr https://stackoverflow.com/questions/62051475
复制相似问题