ciao a tutti amici di html forum, sono alle prese con un progetto di informatica che mi chiede di modificare il QuickSort per farlo funzionare con k partizioni disgiunte; ossia se mi viene dato un array es : 5 2 4 6 1 3 e k=3
devo prendere k-1 pivot random es 4 e 5 ;
poi sistemare il vettore in modo da mettere x < 4 a sinistra, 4 ≤ x < 5 al centro, x ≥ 5 a destra otteniamo 3 2 1 4 6 5
e infine riordinare i sottoarray con chiamate ricorsive.
Mi viene dato il codice di partenza e io devo implementare la funzione Kpartition in modo che lavori con più pivot .
Non è che qualcuno mi da una dritta su come poterlo fare mi basta un consiglio per arrivare al ragionamento ; ad esempio avevo pensato di creare un array di k-1 elementi e di metterci dentro i pivot presi a random però c'è il problema che essendo una funzione ricorsiva il for mi va a ricreare ogni volta il vettore con pivot random diversi.
codice:
void KQUICKSORT(int* list,int k,int p, int r){
int i=0;
if(p<r)
{
int *L = KPARTITION(list, k, p, r);
for(i=0;i<k;i++)
{
KQUICKSORT(list, k, L[i],L[i+1]-1);
}
}
}