Classe Vector e Merge sort

di il
5 risposte

Classe Vector e Merge sort

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

5 Risposte

  • Re: Classe Vector e Merge sort

    Ovvero? SpIegati

  • Re: Classe Vector e Merge sort

    17/06/2023 - oregon ha scritto:


    Ovvero? SpIegati

    Voglio capire se cambia qualcosa tra array e vector nel loro modo in cui si rapportano con gli algoritmi che fanno uso della ricorsione(incide il fatto che un array è un array statico, mentre il vector è un array dinamico), cosa non va nel mio codice( dove l'obiettivo e ordinare i numeri del vector dal più piccolo al grande, dove  i numeri sono forniti dall'utenti attraverso l'istruzione cin).

  • Re: Classe Vector e Merge sort

    Ma cosa ha il tuo codice? Era quello che ti avevo chiesto

  • Re: Classe Vector e Merge sort

    17/06/2023 - oregon ha scritto:


    Ma cosa ha il tuo codice? Era quello che ti avevo chiesto

    ah non avevo capito scusa, sul terminale al posto dell'array ordinato ottengo un array con degli 0 e alcuni (uno o poco più) dei numeri che avevo messo. per es se inserisco 8 numeri mi escono dopo sorted array sette zeri e un 8. L'unica costante che ho notato sono i molti 0.

  • Re: Classe Vector e Merge sort

    Non si capisce esattamente cosa fai..

     Comunque dai un'occhiata qui

    https://slaystudy.com/c-merge-sort-vector/

    per capire cosa sbagli

Devi accedere o registrarti per scrivere nel forum
5 risposte