我做了什么伪代码告诉我在书中介绍的算法和内部排序没有工作递归和C++
有两个部分,我真的不明白
1,怎么办你做一个递归函数,这是一个无效的,我的意思是不应该递归函数总是返回最后一步,然后在它之前..这是一个无效,所以它会如何预处理任务012-merg_sor()被调用两次一个功能..做u调用嵌套的递归?还是什么? ..它是如何影响MERG功能
#include <iostream>
#include <vector>
using namespace std;
void Merg(vector<int> Arr,int start,int middle,int end)
{
std::vector<int> left;
std::vector<int> right;
for(int i =start;i<(end-start);i++)
{
if (i <middle)
{
right.push_back(Arr.at(i));
}
else
{
left.push_back(Arr.at(i));
}
}
int j=0;
int k=0;
for(int i =start;i<(end-start);i++)
{
if(right.at(j)<=Arr.at(i))
{
Arr.at(i)=right.at(j);
j++;
}
else
{
Arr.at(i)=left.at(k);
k++;
}
}
}
void Merg_sort(vector<int> Arr,int start,int end)
{
if (start <end)
{
int middle = (start+end)/2;
Merg_sort(Arr,start,middle);
Merg_sort(Arr,middle+1,end);
Merg(Arr,start,middle,end);
}
}
int main()
{
vector<int> x;
for (int i =0;i<8;i++){x.push_back(i);}
x.at(2)=8;
Merg_sort(x,0,7);
}
即,直接或间接地调用自身的功能是一个递归函数的定义。何时,何地以及如何多次自称是无关紧要的。 –
1)的变化就地完成。也就是说,'Arr'参数正在被修改。 2)这只是递归。 3)'if(start
您应该通过引用'vector&Arr'传递向量,使结果在main中可见。 –