合并排序时出错

时间:2014-08-18 00:31:08

标签: c++ sorting mergesort

我正在尝试在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);


}

对这个问题的任何启示都会有很大的帮助。

0 个答案:

没有答案