IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Fonction tri croissant et tri décroissant


Sujet :

C

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 29
    Points : 16
    Points
    16
    Par défaut Fonction tri croissant et tri décroissant
    Bonjour,

    Voici les programmes suivants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    void fct_tricroitableau(int tableau[], int tailletableau)
    {
         int valeurtemporaire, i, j;
     
         for (i=0; i<tailletableau; i++)
         {
            for(j=i; j<tailletableau; j++)
            {
                if(tableau[j]<tableau[i])  /* si on inverse le signe d'inégalité
                                              on aura le trie décroissant */
                {
                    valeurtemporaire = tableau[i];
                    tableau[i] = tableau[j];
                    tableau[j] = valeurtemporaire;
                }
            }
     
         }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    void fct_tridecroitableau(int tableau[], int tailletableau)
    {
         int valeurtemporaire, i, j;
     
         for (i=0; i<tailletableau; i++)
         {
            for(j=i; j<tailletableau; j++)
            {
                if(tableau[j]>tableau[i])  /* si on inverse le signe d'inégalité
                                              on aura le trie croissant */
                {
                    valeurtemporaire = tableau[i];
                    tableau[i] = tableau[j];
                    tableau[j] = valeurtemporaire;
                }
            }
     
         }
    }
    Ces 2 fonctions void compile très bien.
    Pourriez-vous m'expliquer comment ces 2 fonctions fonctionnent. en commençant par le début.
    Je comprend les 3 variables integer qui sont crée dans la fonction et qui sont éliminées
    à la fin de celle-ci. Je comprend la 2 em ligne qui prend tt les éléments du tableau. Donc boucle for
    pour chaque valeur du tableau. Ensuite c'est le flou total, à partir de la 2em boucle for.

    Pourriez-vous m'aider ?

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 951
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 951
    Points : 5 671
    Points
    5 671
    Par défaut
    Lia,

    Oui, je peux t'aider : c'est un algorithme de tri très classique, il ne te reste qu'à apprendre de quoi il s'agit.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    Ok, merci d'avance.

    On peut commencer quand tu veux.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 677
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 677
    Points : 10 693
    Points
    10 693
    Par défaut
    Tri à Bulles

    Édit: Ta deuxième boucle va de n à max au lieu de 1 à (n - 1)

  5. #5
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    Oui le programme a besoin de prendre toutes les valeurs pour la 1er boucle.
    Et pour la 2e le programme prend le plus grand nombre.
    Mais je n'en suis pas certain.
    Je sais qu'il faut créer un 2e tableau pour reclasser le 1er dans le 2em
    en ordre croissant ou décroissant.

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 739
    Points : 31 068
    Points
    31 068
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Kumral Voir le message
    Pourriez-vous m'expliquer comment ces 2 fonctions fonctionnent. en commençant par le début.
    Bonjour

  7. #7
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    ok je vais essayer de résoudre mon problème tous seul.
    c'est pas gg . je doit sortie mes 4 bouquins.
    Je vous tiendrai au courant si je réussi.

  8. #8
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 739
    Points : 31 068
    Points
    31 068
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Kumral Voir le message
    c'est pas gg . je doit sortie mes 4 bouquins.
    4 bouquins pour analyser 2 boucles ??? T'as raison, c'est vraiment pas gagné. T'aurais pas envie de changer de branche par hasard...?
    Putain t'es pas capable de voir ce que ça fait ??? Une première boucle qui traite chaque élément et qui va le comparer avec chaque autre élément du tableau (2° boucle). S'il est plus petit il permute. A la fin de la seconde boucle, l'élément de la première se trouve fatalement à sa place dans le tableau.
    Puis on passe au second et etc. A la fin, tous les éléments sont à leur place.

    Citation Envoyé par Kumral Voir le message
    Je vous tiendrai au courant si je réussi.
    Oui, ça nous intéresse...

  9. #9
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 410
    Points : 23 808
    Points
    23 808
    Par défaut
    Comme on te l'a dit, c'est du « tri à bulles ». Le tri à bulles est l'algorithme de tri le plus intuitif qui soit : tout le monde ou presque arrive à cette solution quand on débute en programmation et/ou que l'on a besoin de trier un tableau sans s'être spécialement penché sur la question. Malheureusement, c'est aussi un des moins efficaces.

    Le principe est très simple : tu prends le premier élément de ta liste, et tu le compares avec tous les autres. S'il s'avère qu'un de ces autres éléments est inférieur avec celui que tu examines (le premier, donc), alors tu les permutes, tout simplement. Lorsque tu atteins la fin de ta liste, tu sais alors que le plus petit des éléments occupe forcément, désormais, la première place. Et en ce sens, tu peux considérer que lui, est déjà trié (les autres, non, par contre).

    « Tout » ce qu'il te reste à faire, donc, est répéter exactement la même opération avec « le reste de ta liste ». Tu examines donc le second élément, et tu le compares avec tous les éléments qui se trouvent toujours après lui. Ceux qui sont avant sont, par définition, déjà triés et à leur place définitive.

    C'est pour cela que, dans ton programme, tu as une première boucle qui va de 0 à n (donc du début à la fin de ta liste) et une seconde, imbriquée à l'intérieur de la première qui va de i à n, c'est-à-dire de la position courante jusqu'à la fin.

    (EDIT : Crosspost avec Sve@r).

    EDIT 2 : Au temps pour moi, ce n'est pas le tri à bulle (il me semblait bien qu'il était un peu trop optimisé à mon goût) mais le « tri par sélection » qui est implémenté dans ton exemple. Voir ici : https://fr.wikipedia.org/wiki/Tri_par_s%C3%A9lection

  10. #10
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    4 bouquins pour analyser 2 boucles ??? T'as raison, c'est vraiment pas gagné. T'aurais pas envie de changer de branche par hasard...?
    Putain t'es pas capable de voir ce que ça fait ??? Une première boucle qui traite chaque élément et qui va le comparer avec chaque autre élément du tableau (2° boucle). S'il est plus petit il permute. A la fin de la seconde boucle, l'élément de la première se trouve fatalement à sa place dans le tableau.
    Puis on passe au second et etc. A la fin, tous les éléments sont à leur place.


    Oui, ça nous intéresse...
    OUOOH, du calme ! Vous êtes chaud sur ce forum ou quoi !
    Je ne voudrais pas siée la branche à laquelle je m'accroche.
    Mais si je doit sortir 4 livres et étudier toute la nuit pour
    comprendre la fonction tri croissant et tri décroissant sache
    que je le ferais. D'autre part se n'ai pas toi qui va m’empêcher
    de passer en 4 em master en Science de l'Ingénieur Industriel
    en Électromécanique. Et crois moi, je suis un bon. je fais de
    l'informatique que depuis 3 mois et c'est vrai j'ai des lacunes
    dans cette branche. Lacunes que je compte comblé.

    A+

  11. #11
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 739
    Points : 31 068
    Points
    31 068
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Kumral Voir le message
    Mais si je doit sortir 4 livres et étudier toute la nuit pour
    comprendre la fonction tri croissant et tri décroissant sache
    que je le ferais.
    Ben c'est ce que je dis. Si tu as vraiment besoin de sortir 4 livres et étudier toute une nuit, c'est que tu as un très gros pb de compréhension. Accessoirement, t'es allé faire un tour du coté des liens qu'on t'a fourni ?
    Ou même sans ça, t'as essayé juste de poser tab={2, 3, 4, 1} et dérouler l'algo à la main (i=0, j=1, je compare tab[0] et tab[1]; puis j=2, je compare tab[0] et tab[2]; puis j=3, je compare tab[0] et tab[3] => ah je permute et maintenant tab vaut {1, 3, 4, 2}; puis i passe à 1 et je recommence avec j=2...)
    Parce que si tu y étais allé, ou si tu avais juste simplement fait ce minime effort, tu ne nous aurais pas sorti cette ridicule et inutile petite tirade. Comme quoi, pas besoin ni de sortir 4 livres, ni d'étudier toute la nuit...

Discussions similaires

  1. Réponses: 0
    Dernier message: 17/02/2014, 12h25
  2. [XL-2010] Macro pour interdire la fonction tri croissant
    Par Peedjy dans le forum Excel
    Réponses: 3
    Dernier message: 20/06/2012, 14h45
  3. [MySQL] Système de tri croissant et décroissant
    Par logone dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 26/11/2009, 15h32
  4. [MySQL] Tri croissant ou décroissant
    Par marquito dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 25/06/2007, 14h51
  5. Réponses: 2
    Dernier message: 21/06/2005, 17h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo