Buongiorno, non capisco cosa non funzioni nel codice, l'obiettivo è quello di prendere in input dei numeri, inserirli all'interno di vettori della classe vector e ordinarli attraverso l'uso dell'algoritmo merge sort.
Qualcuno gentilmente mi potrebbe aiutare a capire cosa non funziona nel codice e dirmi, se cambia, la relazione che intercorre tra vector e merge sort rispetto a quella tra array e merge sort.
#include<iostream>
#include<vector>
using namespace std;
void print(const vector<int>vec, int size)
{
for (int i = 0; i < size; i++)
{
cout<<vec[i];
}
}
void merge(vector<int>&vec, vector<int>&left, int leftsize, vector<int>&right, int rightsize)
{
int i=0, j=0, k=0;
while (i<leftsize && j<rightsize)
{
if (left[i]<=right[j])
{
vec[k] =left[i] ;
i++;
}
else
{
vec[k]=right[j];
j++;
}
k++;
}
while (i<leftsize)
{
vec[k]=left[i];
i++;
k++;
}
while (j<rightsize)
{
vec[k]=right[j];
j++;
k++;
}
}
void mergesort(vector<int>&vec, int size)
{
if (vec.size()<=1)
{
return;
}
int mid;
mid=size/2;
int other=size-mid;
vector<int>left(mid);
vector<int>right(other);
for (int i = 0; i < mid; i++)
{
left[i]=vec[i];
}
for (int i = mid; i < (other); i++)
{
right[i-mid]=vec[i];
}
mergesort(left, mid);
mergesort(right, other);
merge(vec, left,mid,right,other);
}
int main()
{
cout<<"size vector: ";
int size;
cin>>size;
vector<int>vec(size);
cout<<"Insert vectors elements ";
for (int i = 0; i < size; i++)
{
cin>>vec[i];
}
cout<<"Print before the merge sort:"<<endl;
print(vec, size);
mergesort(vec, size);
cout<<"sorted array";
print(vec, size);
return 0;
}