Tri de nombres

Contenu du snippet

void sortliste1(int unsigned *liste){
    //tri à bulles
    int i, j, a;
    for (i=0;i<L-1;i++){
        for (j=i+1;j<L;j++){
            if (liste[i]>liste[j]){
                a=liste[j];
                liste[j]=liste[i];
                liste[i]=a;
            }
        }
    }
}
void sortliste2(int unsigned *l1){
    //tri fusion
    int i, j, k, l, m, n, o=1;
    int unsigned l2[L];
    int unsigned *l3;
    int unsigned *l4;
    l3=l1;
    l4=l2;
    printf("Debut du tri...\n");
    for (i=0;i<L;i++){
        l2[i]=0;
    }
    for (i=2;i<L;i*=2){
        //la taille des parties à trier
        for (j=0;j<L;j+=i){
            //on parcourt les premiers éléments de nouvelle chaque parties.
            l=0;
            m=0;
            n=(i+j>L)?L-i:i;
            for (k=0;k<n;k++){
                if (m==o){
                    l4[j+k]=l3[j+l+o];
                    l++;
                }else if ( l==o ){
                    l4[j+k]=l3[j+m];
                    m++;
                }else if (l3[j+m]<l3[j+l+o]){
                    l4[j+k]=l3[j+m];
                    m++;
                }else{
                    l4[j+k]=l3[j+l+o];
                    l++;
                }
            }
        }
        if (l3==l2){
            l3=l1;
            l4=l2;
        }else{
            l3=l2;
            l4=l1;
        }
        o=i;
    }
    l=0;
    m=0;
    for (k=0;k<L;k++){
        if (m==o){
            l4[k]=l3[l+o];
            l++;
        }else if ( l==o ){
            l4[k]=l3[m];
            m++;
        }else if (l3[m]<l3[l+o]){
            l4[k]=l3[m];
            m++;
        }else{
            l4[k]=l3[l+o];
            l++;
        }
    }
    if (l4==l2){
        for (k=0;k<L;k++){
            l1[k]=l4[k];
        }
    }
}
void sortliste4(int unsigned *l1){
    //Cet algo de tri est l'algo de tri par insersion.
    int i, j, k, l;
    for (i=1;i<L;i++){
        l=l1[i];
        for (j=0;j<i;j++){
            if (l1[i]<l1[j]){
                for (k=i-1;k>j;k--){
                    l1[k+1]=l1[k];
                }
                l1[j]=l;
                break;
            }
        }
    }
}


Compatibilité : C, C++

Disponible dans d'autres langages :

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.