18/06/11 15:16
XBarboX
Ciao a tutti,
sto imparando un po' di algoritmi ed oggi ho provato ad implementare un quick sort.
(Credo) di aver capito bene come funziona, tuttavia trovo parecchia difficoltà ad implementarlo.
Non capisco cosa sbaglio. Credo sia nella struttura dati...
Cosa sbaglio?
sto imparando un po' di algoritmi ed oggi ho provato ad implementare un quick sort.
(Credo) di aver capito bene come funziona, tuttavia trovo parecchia difficoltà ad implementarlo.
Non capisco cosa sbaglio. Credo sia nella struttura dati...
void Distribuisci(int vettore[], int sinistra, int destra){ if(sinistra < destra){//Controllo che la segmentazione continui nel modo corretto int pivot = (sinistra+destra)/2; //Come pivot scelgo l'elemento centrale int appoggio[n]; //Array di appoggio per salvare momentaneamente int c = 0; //Contatore elementi array appoggio int pos; //posizione finale del pivot //Metto in appoggio i numeri più piccoli di vettore[pivot] for(int i=sinistra; i<=destra; i++){ if(i!=pivot && vettore[i] < vettore[pivot]){ c++; appoggio[c]=vettore[i]; } } //Metto in appoggio il pivot c++; pos = c; appoggio[c] = vettore[pivot]; //Metto in appoggio i numeri più grandi di vettore[pivot] for(int i=sinistra; i<=destra; i++){ if(i!=pivot && vettore[i] >= vettore[pivot]){ c++; appoggio[c]=vettore[i]; } } //Aggiorno situazione for(int i=sinistra; i<=destra; i++){ vettore[i] = appoggio[i]; } //Ricorsione per ordinare la parte a sinistra e a destra del pivot Distribuisci(vettore,sinistra, pivot-1); Distribuisci(vettore,pivot+1, destra); } }
Cosa sbaglio?
aaa