我正在尝试在C ++中创建一个合并排序算法,它将一个泛型类型的Vector作为其输入并对Vector中的元素进行排序。 每当我尝试测试算法时,我都会收到 [run] Bus错误(核心转储)错误。
我的合并排序代码如下:
template <typename T>
void merge_sort(std::vector<T>& vector)
{
typename std::vector<T>::iterator middle_value = vector.begin()+vector.size()/2; std::vector<T> left_side(vector.begin(), middle_value);
std::vector<T> right_side(middle_value,vector.end());
merge_sort(left_side);
merge_sort(right_side);
std::vector<T> merged;
int i,j;
while(i<left_side.size() && j<right_side.size())
{
if(left_side.at(i)<right_side.at(j))
{
merged.push_back(left_side.at(i));
i++;
}
else
{
merged.push_back(right_side.at(j));
j++;
}
}
while(i<left_side.size())
{
merged.push_back(left_side.at(i));
i++;
}
while(j<right_side.size())
{
merged.push_back(right_side.at(j));
j++;
}
for(int x=0;x<merged.size();x++)
vector.at(x)=merged.at(x);
}
对这个问题的任何启示都会有很大的帮助。