Les Snippets

Connexion

Tri de nombres

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 18/07/2007 17:00:30 et initié par JMO [Liste]
Date de mise à jour : 24/06/2008 12:51:07
Vue : 11771
Catégorie(s) : Algorithme
Langages dispo pour ce code :
- VBScript
- Javascript
- C, C++
- VB 2005, VB.NET 1.x
- C# 2.x
- VB6, VBA
- ObjectiveCaml
- ObjectiveCaml
- Voir tous les langages pour ce code snippet



Langage : C , C++
Date ajout : 25/07/2007
Posté par coucou747 [Liste]

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;
            }
        }
    }
}

Remarque :
voici trois algos de tris : tri fusion, tri a bulles, et tri par insertions.
si liste est un int unsigned [taille] alors :
sortliste1(liste);
fonctionne simplement

Snippets en rapport avec : Tri, Nombre, Croissant, Décroisant



Codes sources en rapport avec : Tri, Nombre, Croissant, Décroisant

{Visual Basic, VB6, VB.NET, VB 2005} TRI COMPLEXE SUCCESSIF MULTI OPTION AVEC UNE MSHFLEXGRID
Tri complexe, rapide et simple à l'aide d'une MshFlexGrid. 4 colonnes successives possible : par exe...

{PHP} TRIE ET FILTRE UNIVERSEL DE REQUÊTES DANS UN FORMULAIRE À PARTIR DE SES CONTRÔLES
Voici un script, composé d'un fichier d'inclusion et d'une page de déclaration de variables, qui per...

{PDA / PocketPC} TRI D'UN TABLEAU DE VALEUR DANS L'ORDRE CROISSANT
Petit bout de code sans aucune prétention, pour que le site possède des algorithmes types, au mi...

{Visual Basic, VB6, VB.NET, VB 2005} CHIFFRE EN LETTRE FONCTION
Une petite fonction simlpe pour transformer un chiffre en lettre. Exemple: "15193" >> dix ...

{Python} RACINE N-IÈME D'UN RÉEL A, PAR LA METHODE DE NEWTON-RAPHSON
Ce programme permet de determiner la racine n-ième (n>0) d'un nombre avec une précision remarquable....

{Python} NOMBRES DE KAPREKAR
Bonjour, J'ai trouvé un sujet intéressant en fesant les exercices du concours Prologin qui s'appe...

{Visual Basic, VB6, VB.NET, VB 2005} GESTION DE LISTES (FUSION, COMPARAISON, TRI...)
Je manipule pour le boulot des fichiers. Par centaines, voire plus. J'ai souvent des listes de fich...

{Visual Basic, VB6, VB.NET, VB 2005} XPLISTVIEW
Il s'agit là d'un portage d'une source C# en VB.Net Voici donc une ListView améliorée : - Pos...

{C / C++ / C++.NET} LE QUICKSORT NON-RECURSIF ET L'IMPACT DE L'INSERTIONSORT SUR SES PERFORMANCES
Je depose cette source en rapport avec une discussion sur les performances du tri rapide (quicksort)...

{Visual Basic, VB6, VB.NET, VB 2005} LISTE DES EMAILS, NUMÉRO DE TÉLÉPHONNES DES TRAVAILLEURS
Cette source propose une manière simple de rechecher le numéro de telephone fixe ou mobile d'un coll...