Partizionamento nel quicksort

di il
4 risposte

Partizionamento nel quicksort

Ciao a tutti,
non riesco a capire un'istruzione presente all'interno di una funzione che effettua il partizionamento di un array.L'istruzione è la seguente:
for(;;)
Ecco il codice completo:
int Partition(Dato a[],int l,int r)
{int i,j;
Dato v;
i=l-1; j=r; v=a[r];
for(;;)
{while(minore(a[++i],v));
while(minore(v,a[--j]));
if (i>=j) break;
scambia(&a[i],&a[j]);
}
scambia(&a[i],&a[r]);
return i;
}
Ciao e grazie

4 Risposte

  • Re: Partizionamento nel quicksort

    Ciao salvogsm80
    Non riesci a capire la sintassi della singola riga o il funzionamento della funzione?

    for(;;) indica un ciclo infinito. Da un ciclo del genere puoi uscire con un break o un return.
  • Re: Partizionamento nel quicksort

    Ciao barba59,
    non capivo la sintassi della singola riga.Quindi il for(;;) indica un ciclo infinito che nel mio caso viene interrotto quando viene eseguita l'istruzione
    if (i>=j) break;
  • Re: Partizionamento nel quicksort

    Esatto, il for diventa un ciclo infinito se ometti la seconda condizione, potresti per esempio scrivere:
    
    for(i=1; ; i++)
    
  • Re: Partizionamento nel quicksort

    Ok grazie mille!Sei stato molto chiaro!!!Buona giornata e grazie ancora!
Devi accedere o registrarti per scrivere nel forum
4 risposte