View Single Post
Old 16-02-2007, 14:42   #4
yorkeiser
Senior Member
 
L'Avatar di yorkeiser
 
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
while(1) -> cicla all'infinito le istruzioni del blocco. Dal momento che il while cicla finchè la condizione tra parentesi è vera, e siccome 1 è sinonimo di vero in c (in realtà puoi scriverci qualsiasi numero diverso da 0), eseguirai all'infinito le istruzioni del blocco while

Di seguito ti riporto un insertion sort:

Codice:
void insertion_sort(int x[], int n) 
{
    int i, j, app;

    for (i=1; i<n; i++) {
        app = x[i];
      
        j = i-1;
        while ((j>=0) && (x[j]>app)) {
            x[j+1] = x[j];
            j--;
        }

        x[j+1] = app;
    }

}
Funziona così: prendi l'elemento i-esimo dell'array e lo confronti con quelli precedenti, inserendolo appena l'elemento con cui lo stai confrontando è minore. Quindi, al primo passo, prendi il secondo elemento (i=1), lo confronti col primo (i=0) e se è minore lo porti in testa all'array; se prendessi il primo elemento (i=0) con cosa lo confronteresti?
Questa è comunque solo una filosofia d'implementazione - quella classica; potresti tranquillamente partire dal primo elemento (i=0) e confrontare verso destra mettendo gli elementi in fondo all'array
__________________
Il sole è giallo
yorkeiser è offline   Rispondi citando il messaggio o parte di esso