Oppure

Loading
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...

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
19/06/11 12:18
HeDo

ma il programma non funziona? non compila? ordina in maniera errata? muore?
aaa
19/06/11 16:11
Se è c++, q quela è la funzione principale, non drovrebbe essere int main(...) ?