Salve a tutti!
Sono 2 giorni che mi picchio con il Quicksort con scelta del pivot randomico...compila,ma non fa ciò che deve, tendendo a scambiare il pivot con l'ultimo elemento o simile.Vi lascio il codice.
/**************************************************************************************
QUICKSORT RANDOMIZZATO
***************************************************************************************/
int partitionr(vector <int>&u ,int first,int last){
int p=(rand() % u.size()+1);
int pivot=u[p];
int i=p+1;
for(int j=first; j<last; j++){
if(i<last){
if(u[j]<pivot){
scambia(u, i, j);
i=i+1;
}
}
}
scambia(u, first, i);
return (i);
}
void quickSortRandom(vector<int>& v)
{
if(v.size()==1)
return;
int p;
//=(rand() % v.size()+1);
p=partitionr(v , 0 , v.size()-1);
qs(v , 0 , p);
qs(v , p+1, v.size()-1);
}