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

Algorithmes et structures de données Discussion :

besoin d'une correction sur un exercice.


Sujet :

Algorithmes et structures de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 21
    Points : 10
    Points
    10
    Par défaut besoin d'une correction sur un exercice.
    Ecrire un algorithme qui permet de saisir un tableau de 20 entiers et qui le trie en ordre croissant et en ordre décroissant à partir d’une position fixée donnée par l’utilisateur.

    Une fois le tableau saisi, l’utilisateur fixe la position, avant laquelle le tableau est trié en ordre croissant et après laquelle le tableau est trié en ordre décroissant.


    Déclaration :

    Var_position
    Var Tab tt[20] : tableau d’entiers
    T[1]
    T[2]
    T[3]
    T[4]
    T[5]
    T[6]
    T[7]
    T[8]
    T[9]
    T[10]
    ... jusqu'a T[20]

    PRODECURE Tri_bulle (Tableau a[1:n])

    VARIABLE permut : Booleen;

    REPETER
    permut = FAUX
    POUR i VARIANT DE 1 à N-1 FAIRE
    SI a[i] > a[i+1] ALORS
    echanger a[i] et a[i+1]
    permut = VRAI
    FIN SI position=var_position
    FIN POUR
    TANT QUE permut = VRAI

    FIN PROCEDURE

    PRODECURE Tri_bulle_inverse (Tableau a[1:n])

    VARIABLE permut : Booleen;

    REPETER
    permut = FAUX
    POUR i VARIANT DE 1 à N-1 FAIRE
    SI a[i] > a[i-1] ALORS
    echanger a[i] et a[i-1]
    permut = VRAI
    FIN SI position=20
    FIN POUR
    TANT QUE permut = VRAI

    FIN PROCEDURE


    voila, est ce correct ?

  2. #2
    Membre habitué Avatar de Marco85
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 210
    Points : 187
    Points
    187
    Par défaut Re: besoin d'une correction sur un exercice.
    Citation Envoyé par phakso
    PRODECURE Tri_bulle (Tableau a[1:n])
    <...>
    FIN PROCEDURE

    PRODECURE Tri_bulle_inverse (Tableau a[1:n])
    <...>
    FIN PROCEDURE
    Ah bon ?

    Marco85

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    oui, escuse moi.

    PRODECURE Tri_bulle (Tableau a[1:n])
    <...>
    FIN PROCEDURE

    PRODECURE Tri_bulle_inverse (Tableau a[Var_position :n])
    <...>
    FIN PROCEDURE

  4. #4
    Membre actif Avatar de Betatesteur
    Inscrit en
    Juillet 2003
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 210
    Points : 248
    Points
    248
    Par défaut
    lol chui d'accord avec Marco

    Définis plutôt une procédure, inverserTableau, qui change de place les éléments de ce tableau de telle façon que le nouveau tableau soit une sorte de « miroir » de l'ancien.

    Exemple : 1 2 4 6 -> 6 4 2 1
    c'est assez simple


  5. #5
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,
    une méthode peut etre plus facile que le tri à bulle est tout simplement la recherche qu plus petit ou plus grand élément. Tu cherches le plus petit (grand), tu le met en premier, puis tu continues

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    ça donne quoi concrétement ?

    Si i supérieur aux autres valeurs mettre i en premier



    Je débute. c'est n'importe quoi ce que j'ai écris...

    Quand tu parles de tri de recherche, qu'est ce que tu désigne par là ? parce qu'en algorithme de tri, ce que j'ai trouver c'est ça :

    Les tris

    * Généralités sur les tris
    * Tris itératifs
    o Généralités sur les tris itératifs
    o Tris par sélection
    + Tri par minimum successifs
    + Tri à bulles
    o Tri par insertion
    * Tris récursifs
    o Tri rapide
    o Tri par fusion

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    je peux utiliser ça !

    Principe du tri par sélection

    Le principe du tri par sélection est très simple : on parcourt le tableau de la première à la dernière case. Pour chacune des cases, on place le nombre qui y correspond.

    Comment ? Au début, on place le plus petit élément dans la première case. Il ne nous reste plus qu'à trier le reste du tableau, de la case 2 à la case n. On place alors le plus petit élément dans la deuxième case. Les deux premières cases sont triées, on trie alors le reste du tableau, de la case 3 à la case n, et ainsi de suite. Ainsi :

    Pour i allant de 1 à n, on place le minimum de t[i..n] en t[i]

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Betatesteur
    lol chui d'accord avec Marco

    Définis plutôt une procédure, inverserTableau, qui change de place les éléments de ce tableau de telle façon que le nouveau tableau soit une sorte de « miroir » de l'ancien.

    Exemple : 1 2 4 6 -> 6 4 2 1
    c'est assez simple

    Oui, mais si l'utilisateur saisie la position 4 comme position d'inversion du sens de tri ?

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    Déclaration :
    //position d'inversement de l'algo.
    Var_position

    Var Tab tt[20] : tableau d’entiers
    T[1]
    T[2]
    T[3]
    T[4]
    T[5]
    T[6]
    T[7]
    T[8]
    T[9]
    T[10]
    ... jusqu'a T[20]

    Pour i allant de 1 à n :

    * on recherche séquentiellement le minimum dans t[i..n],
    * on échange t[i] et le minimum.


    Donc pour le décroissant, ça devient

    Pour i allant de var_position à n :

    * on recherche séquentiellement le maximum dans t[i..n],
    * on échange t[i] et le maximum.

    Il me semble avoir bon maintenant !

  10. #10
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Supposons que le nombre d'élément du tableau est N et la position du max est P.
    Exemple : N=9 P=6
    Il suffit de trier en ordre croissant par un algo classique.
    Exemple : 0 1 2 4 7 8 8 9 9
    On prend les P-1 premiers nombres et on les déplace en fin de tableau,
    Exemple : 4 7 8 8 9 9 0 1 2
    On fait une symétrie sur les P-1 derniers nombres par rapport à la position (N-P+1)/2 / cette étape peut bien sûr être couplée à la précédente /.
    Exemple : 4 7 8 8 9 9 2 1 0
    Ceci ne fournit qu'un des multiples ordre de tri répondant au problème.

  11. #11
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,
    petit complément pour ce que j'ai marqué au début.
    Supposons que tu dois trier le tableau à la main de maniére croissante, comment t'y prendais tu ?
    Pour moi, je chercherai le plus petit élément et je le mettrai dans la première case. Ensuite je regarderai de la deuxième case à la dernière (plus besoin de regrader la première car elle contient le plus petit élément) et je rechercherai encore le plus petit que je mettrai en deuxième position. Et ainsi de suite.

    Donc :
    Pour i qui va de 0 < n-1
    Pour j qui va de 1 < n
    Trouver le plus petit élément et noter ca position.
    Inverser la position du plus petit avec l'élement dans la case i.

    Voilà c'est tout.

  12. #12
    Membre actif Avatar de Betatesteur
    Inscrit en
    Juillet 2003
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 210
    Points : 248
    Points
    248
    Par défaut
    Toto13, relis bien son énoncé
    qui le trie en ordre croissant et en ordre décroissant à partir d’une position fixée donnée par l’utilisateur.
    toi tu fais un tris normale. c'est pas ce qu'il veut. en plus il a déjà sa réponse, non?

  13. #13
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Oups effectivement, autant pour moi.

    Donc on reprend en modifiant ce que j'ai marqué au dessus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Pour i qui va de Debut < n-1
         Pour j qui va de Debut+1 < n
              Trouver le plus petit élément et noter ca position.
              Inverser la position du plus petit avec l'élement dans la case i.
    Donc maintenant ca tri à partir de l'élement Début.

  14. #14
    Membre actif Avatar de Betatesteur
    Inscrit en
    Juillet 2003
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 210
    Points : 248
    Points
    248
    Par défaut
    Citation Envoyé par phakso
    Citation Envoyé par Betatesteur
    lol chui d'accord avec Marco

    Définis plutôt une procédure, inverserTableau, qui change de place les éléments de ce tableau de telle façon que le nouveau tableau soit une sorte de « miroir » de l'ancien.

    Exemple : 1 2 4 6 -> 6 4 2 1
    c'est assez simple

    Oui, mais si l'utilisateur saisie la position 4 comme position d'inversion du sens de tri ?
    c'est exactement ça.
    1. tris normale
    2. l'utilisateur choisi tab[2] par exemple comme point d'inversion du table
    3 dans ta boucle tu pars de tab[2] j'usqu'à tab[n] et t'appelle la procédure inverserTableau , fin de ta boucle.
    4. t'aura , une partie en ordre croissant et à partir du point d'iversion choisi , le tableau est inversé, ça décrémente.

    voilà c'est tout.

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/11/2014, 21h26
  2. Besoin d'une correction sur une requête
    Par Nessie37 dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 11/12/2007, 19h47
  3. besoin d'une précision sur le déploiement de fichiers
    Par NicoO_O dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 22/01/2007, 21h08
  4. Réponses: 5
    Dernier message: 10/01/2007, 10h38
  5. Réponses: 5
    Dernier message: 20/11/2003, 17h36

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