我做了什麼僞代碼告訴我在書中介紹的算法和內部排序沒有工作遞歸和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中可見。 –