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];
    }
    }
}
 
     
     
    