I am using C++ to implement the mergesort algorithm using vectors instead of arrays. I worked step by step from the original algorithm but when I compile, I get no output or error messages. I think there is an issue with my "merge" function but I cannot find it. I am new to sorting algorithms so if there are any fundamental misunderstandings or errors in my code please explain them to me.
#include <iostream>
#include <vector>
using namespace std;
void mergeSort(vector<int>& numvec, int left, int right){
if(left < right){
int middle = left + (right - left) / 2;
mergeSort(numvec, left, middle);
mergeSort(numvec, middle + 1, right);
merge(numvec, left, middle, right);
}
}
int merge(vector<int>& numvec , int left, int mid, int right){
int i, j, k, temp[right-left+1];
i = left;
j = right;
k = mid + 1;
while(i <= mid && j <= right){
if(numvec[i] < numvec[j])
{
temp[k] = numvec[i];
k++;
i++;
}
else
{
temp[k] = numvec[j];
k++;
j++;
}
while(i <= mid){
temp[k] = numvec[i];
k++;
i++;
}
while( j <= right){
temp[k] = numvec[j];
}
for(i = left; i <= right; i++){
numvec[i] = temp[i - left];
}
}
}