我正在實現合併排序算法,我收到合併算法中的std :: bad_alloc並使用cerr語句我發現我的錯誤是在合併算法的第一個循環中。但是我無法弄清楚什麼是錯的。實現合併排序算法問題
vector<int> VectorOps::mergeSort(vector<int> toSort)
{
if(toSort.size() <= 1)
{
return toSort;
}
vector<int> left;
vector<int> right;
int half = toSort.size()/2;
for(int i = 0; i < half; ++i)
{
left.push_back(toSort.at(i));
}
for(int i = half; i < toSort.size(); ++i)
{
right.push_back(toSort.at(i));
}
//merge algorithim
vector<int> toReturn;
while(left.size() > 0 || right.size() > 0)
{
cerr << "The numbers are "<< endl;
if(left.size() > 0 && right.size() > 0)
{
if(left.at(0) <= right.at(0))
{
toReturn.push_back(left.at(0));
}
else
{
toReturn.push_back(right.at(0));
}
}
else if(left.size() > 0)
{
toReturn.push_back(left.at(0));
}
else if(right.size() > 0)
{
toReturn.push_back(right.at(0));
}
}
return toReturn;
}
我建議你開始使用調試器,因爲'cerr'不允許你單步執行並查看變量。 –