i have implemented two functions for my merge_sort, the first one divides the array and the last it does the merge_sort, when i run it using visual studio it works fine but using school's compilers it, gives me a segmentation error, now im trying to figure out the error but no luck since hw is graded based on using and school's compilers, can you guys help, this is what i have working on visual studio,
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);
}
Aucun commentaire:
Enregistrer un commentaire