我已经为我的merge_sort实现了两个函数,第一个用于分割数组,最后一个用于进行merge_sort,当我使用visual studio运行它时工作正常但是使用了学校的编译器,它给了我一个细分错误,现在我试图找出错误,但没有运气,因为hw基于使用和学校的编译器评分,你们可以帮助,这是我在视觉工作室工作,
template<typename T>
void merge(std::vector<T>& left,
std::vector<T>& right,
std::vector<T>& vector)
{
size_t i = 0;
size_t j = 0;
size_t k = 0;
auto leftSide = left.size();
auto rightSide = right.size();
while(i < leftSide && j < rightSide)
{
if(left[i] <= right[j])
vector[k] = std::move(left[i++]);
else
vector[k] = std::move(right[j++]);
++k;
}
while(i < leftSide)
vector[k++] = std::move(left[i++]);
while(j < rightSide)
vector[k++] = std::move(right[j++]);
}
template<typename T>
void merge_sort(std::vector<T>& vector)
{
auto value = vector.size();
auto middle = value / 2;
std::vector<T> left(middle);
std::vector<T> right(value - middle);
for(size_t i = 0; i < middle; ++i)
left[i] = std::move(vector[i]);
for(size_t i = middle; i < value; ++i)
right[i-middle] = std::move(vector[i]);
merge_sort(left);
merge_sort(right);
merge(left, right, vector);
}