• [^] # Re: pour la rapidité chapeau

    Posté par . En réponse au message comment trier des nombres?. Évalué à 2.

    C'est domage que tu n'aie pas dit quel language tu utilises mais bon.
    On va faire ca en C.

    Tout d'abors il y a plusieurs méthodes pour trier des éléments (qu'ils soient entiers ou non, il faut juste qu'ils soient ordonnés, pour des entier, l'ordre, c'est la valeur, mais si c'était des bananes ce serait leur poids par exemple)

    Tri à bulle cité plus haut consiste à remonter le plus petit élément au début du tableau. (ou le plus grand selon l'ordre que tu veux)

    soit un tableau :
    tab = [2|3|8|9|4|5|1]

    On cherche le plus petit à partir du début (tab[0] à tab[6]) : 1
    1 est à la postion 6.
    On l'échange avec 2 :

    tmp = tab[0];
    tab[0] = tab[6];
    tab[6] = tmp;

    on obtient tab == [1|3|8|9|4|5|2]

    Après on recherche le plus petit à partir du second élément (tab[1] à tab[6]) : 2
    on l'échange avec 3
    on obtient tab == [1|2|8|9|4|5|3]

    tu continue : tab devient à le suite :

    [1|2|3|9|4|5|8]
    [1|2|3|4|9|5|8]
    [1|2|3|4|5|9|8]
    [1|2|3|4|5|8|9]

    voilà.

    Ca c'est la présentation de l'algo, maintenant il faut le présenter sous forme
    de language informatique.
    Comme tu t'en doute, la procédure est identique pour tout les éléments,
    il faut donc utiliser une boucle, qui va réexécuter le même bout de code à
    quelques variations près (ici la recher et l'echange de élément).

    Ceci nécessite d'ajouter des variables de boucles, qui se modifirons
    au fur et à mesure de l'exécution.

    int depart = 0 // premier élément à partir duquel on cherche
    int dernierPlusPetit // élément le plus petit trouvé lors de la recheche.
    int indiceDuDernierPlusPetit // position du denier plus petit trouvé.
    int tmp // variable temporaire.

    // on s'arrête à TAILLE_TAB - 2 car le tableau sera trié à la fin du tri de
    // l'avant dernière variable : on ne tri pas une valeur toute seule
    pour i de 0 à TAILLE_TAB - 2 faire

    // recherche du plus petit élément
    // on commence par initialiser les variables, si besoin
    dernierPlusPetit = tab[depart + 1]
    indiceDuDernierPlusPetit = depart + 1
    pour j de depart à TAILLE_TAB - 1
    // on regarde les éléments un a un
    si (dernierPlusPetit < tab[j] ) alors
    // si on en trouve un plus petit que le dernier petit connu,
    // c'est le nouveau dernier plus petit
    dernierPlusPetit = tab[j]
    indiceDuDernierPlusPetit = j
    finsi

    // On a le dernier plus petit, reste à le mettre à sa place.
    tmp = tab[depart]
    tab[depart] = tab[indiceDuDernierPlusPetit]
    tab[indiceDuDernierPlusPetit] = tmp

    finpour

    finpour

    Voilà.

    Si tu est débutant et si tu as vraiment du mal à comprendre ca je te
    conseille de te trouver un bouquin prog pour les nuls ou ce genre la.
    Je ne veux pas te décourager, mais la programmation demande
    beaucoup d'expérience et de travail, mais ce qui est génial,
    c'est que si t'aime ca c'est pas du boulot, c'est du loisir.