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'aide pour le tri par insertion.


Sujet :

Algorithmes et structures de données

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 122
    Points : 189
    Points
    189
    Par défaut besoin d'aide pour le tri par insertion.
    Bonsoir tout le monde

    J'épprouve quel que difficulté avec l'algo de tri par insertion.

    J'ai commi une erreur.

    Voici mon algo

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    pour j = 1 a longueur de j
    cle = t[j]
    i=j-1
     
    tant que(cle<t[i])
    t[]=cle
    i--1
     
    fin de tant que
    t[i]=cle
    Mon erreur se trouve i--1.

    j'ai cherché pour voir ce qui n'allé pas, j'ai pas trouvé.

    Pourriez vous m'aider svp, à corriger cette erreur.

    Je vous en remerci d'avance.

    Cordialement.

    A bientôt
    je suis un développeur debutant qui cherche à comprendre.

    Certain livre sont pas facile à comprendre.

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Que cherches-tu à faire exactement ?
    Le principe du tri par sélection est d'aller chercher le plus petit élément du tableau pour le mettre en premier, puis de repartir du second élément et d'aller chercher le plus petit élément du tableau restant pour le mettre en second, etc...
    Dans un premier temps ton algo peut s'écrire comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    pour i de 1 à taille faire
      selectionner le plus petit element du tableau restant 
      ranger ce plus petit dans la case d'indice i
    fin pour
    Il rest à écrire l'algo de la recherche du plus petit élément du tableau restant
    Celà se fait en initialisant la clé à la valeur du tableau à l'indice courant et à parcourir le reste du tableau, si on rencontre un élément plus petit que la clé, on mémorise cette valeur et son indice k

    Une fois que la recherche est terminée, ranger ce plus petit élément dans la case i revient à intervertir les valeurs du tableaux d'indices i et k, et on passe au nombre suivant.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  3. #3
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    pour i de 1 a taille tableau-1
       minimum<-i
       pour j de i+1 a taille tableau
          si tableau[j] < minimum alors minimum<-tableau[j]
       fin pour j
       echanger(tableau[i],minimum)
    fin pour i
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  4. #4
    Débutant  
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 122
    Points : 189
    Points
    189
    Par défaut
    Bonjour tout le monde

    C'est un tri par insertion, comme on tri les carte à joué.

    J'ai modiffié i--1 par i=-1.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <div style="text-align: left;">pour j = 1 a longueur de j
    cle = t[j]
    i=j-1
     
    tant que(cle<t[i])
    t[]=cle
    i=-1
     
    fin de tant que
    t[i]=cle</div>
    En java il me sort cette erreur.

    Je ne comprends pas, j'ai pour pourtant vérifié plusieurs foi dans mes cours et livres d'algo.

    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
    at Triinssertion.main(Triinssertion.java:72)

    J'ignore si le problème vient de Algo ou du code.

    Merci

    Cordialement

    A bientôt
    je suis un développeur debutant qui cherche à comprendre.

    Certain livre sont pas facile à comprendre.

  5. #5
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    C'est ton code, et ilm l'indique bien. Tu as un indice -1 pour un tableau, il ne doit pas apprécier !
    pourquoi i=-1, j'aurai plutôt dit i-=1.

  6. #6
    Débutant  
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 122
    Points : 189
    Points
    189
    Par défaut
    Re

    Il n'aime pas non plus le tant que.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    pour j = 1 a longueur de j
    cle = t[j]
    i=j-1
     
    tant que(cle<t[i])
    t[]=cle
    i=-1
     
    fin de tant que
    t[i]=cle
    Il s'arrette à cle<t[i] c'est i=j-1 qui fait cela.

    Je ne vois vraiement pas comment contourner cela.

    A+
    je suis un développeur debutant qui cherche à comprendre.

    Certain livre sont pas facile à comprendre.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 296
    Points : 252
    Points
    252
    Par défaut il naime pas le "tant que"
    salut,

    c'est clair que si tu donne ca a javac, il va pas aimer.

    c'est pas du java. c'est de l'algorithmique en bon francais.

    et puis personnellement je vois pas que cette erreur la .

    longueur de j : ca veut dire quoi ?

    ton "pour" va jusqu'ou ?

    si t[j] est dans le pour, autant mettre tout de suite le dernier element de T dans "cle".

    ensuite dans le tant que : t[] ca a quel sens ?

    je pense pas que le i=-1 soit le vrau probleme .

    au plaisir , cedric

  8. #8
    Débutant  
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 122
    Points : 189
    Points
    189
    Par défaut
    Re

    Longeur est un entier on fait

    longeur<=t.length;

    j'espere que ce sera plus clair ci-dessous.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    pour j <= 1 a  n
    cle <= t[j]
    i<=j-1
     
    tant que(cle<t[i])
    t[i+1]=t[i]
    i<=-1
     
    fin de tant que
    t[i]<=cle
     
    fin pour
    A+
    je suis un développeur debutant qui cherche à comprendre.

    Certain livre sont pas facile à comprendre.

  9. #9
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Ton algorithme est toujours faux...

    --
    Jedaï

  10. #10
    Débutant  
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 122
    Points : 189
    Points
    189
    Par défaut
    Bon

    En quoi est faut mon algo.

    A+
    je suis un développeur debutant qui cherche à comprendre.

    Certain livre sont pas facile à comprendre.

  11. #11
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Essaye le sur un petit tableau par exemple {1, 5, 2, 11, 7,3} et tu verras ...
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  12. #12
    Débutant  
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 122
    Points : 189
    Points
    189
    Par défaut
    Je m'aperçois que les prof raconte n'importe quoi et que les livres c'est pareille.

    Avec ce que tu ma données, ca fait la même erreur.

    A+
    je suis un développeur debutant qui cherche à comprendre.

    Certain livre sont pas facile à comprendre.

  13. #13
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    L'algo corrigé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    pour i de 1 a taille tableau-1
       minimum<-i
       pour j de i+1 a taille tableau
          si tableau[j] < tableau[minimum] alors minimum <-j
       fin pour j
       echanger(tableau[i],tableau[minimum])
    fin pour i
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  14. #14
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    En effet je n'ai pas relu.
    Merci de l'avoir fait.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  15. #15
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    De toute façon, pour moi c'est pas mieux, argon recherche le tri par insertion et je lui ai expliqué le tri par sélection
    pour le tri par insertion, on peut faire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    pour j = 1 a longueur de j
      cle = t[j]
      i=j
     
      // il faut faire attention de ne pas dépasser les limites du tableau
      tant que(i > 0 && cle<t[i-1])
         // on remonte l'element
         t[i]=t[i-1]
         i = i - 1
      fin de tant que
      t[i]=cle
    fin pour
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  16. #16
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  17. #17
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Tu es à Rouen ??
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  18. #18
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Citation Envoyé par Trap D
    Tu es à Rouen ??
    Pas du tout, c'est juste un lien que j'ai trouvé en faisant des recherches sur les tris.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  19. #19
    Débutant  
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 122
    Points : 189
    Points
    189
    Par défaut
    Merci beaucoup pour votre aide

    Maintenant, je vais m'attaquer au tri par permutation.

    Si, j'ai bien compris.

    un algo est un langage, et il faut traduire ce langage pour faire le programme.

    A bientôt
    je suis un développeur debutant qui cherche à comprendre.

    Certain livre sont pas facile à comprendre.

  20. #20
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Un algorithme est une suite d'actions à accomplir. Un programme est l'implémentation de cet algorithme dans un langage.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/07/2014, 12h28
  2. [XL-2003] besoin d'aide pour faire tri spécifique
    Par porkybou dans le forum Excel
    Réponses: 2
    Dernier message: 16/08/2011, 19h31
  3. Réponses: 2
    Dernier message: 13/12/2010, 18h18
  4. Réponses: 2
    Dernier message: 03/12/2010, 22h21
  5. Réponses: 1
    Dernier message: 02/06/2008, 20h31

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