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

avec Java Discussion :

probleme traduction d'algorithme de tri


Sujet :

avec Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 8
    Points : 6
    Points
    6
    Par défaut probleme traduction d'algorithme de tri
    Bonjour,

    cela fait 2h que je cherche à traduire en java cet algorithme sans succès :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    tri(deb,fin) {
    g=deb;
    d=fin;
    pivot=tab[deb];
     
    iterer
           iterer
                   sortir quand (tab[d]<=pivot)
                   d=d-1;
           fin-iterer
     
           sortir quand (g=d)
           tab[g]=tab[d];
           tab[d]=pivot;
           g=g+1;
     
           iterer
                   sortir quand (tab[g]>=pivot)
                   g=g+1;
           fin-iterer
     
           sortir quand (g=d)
           tab[d]=tab[g];
           tab[g]=pivot;
           d=d-1;
    fin-iterer
     
    si (g-1>deb) alors tri(deb,g-1) finsi
    si (fin>g+1) alors tri(g+1,fin) finsi
    }
    Voici ce que j'ai fait (comme parametre j'ai passé au départ biDirectionSort(0,n-1) avec n nombre de chiffre dans mon tableau) :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    public void biDirectionSort(int start, int end)  {
    			int g=start;
    			int d=end;
    			int pivot=tab[start];
     
     
    			while((g!=d)&&(tab[d]>pivot)) {d--;}
     
    			if(g!=d) {				
    				tab[g]=tab[d];
    				tab[d]=pivot;
    				g++;
    			}
     
     
    			while((g!=d)&&(tab[g]<pivot)) {g++;}
     
    			if(g!=d) {
    				tab[d]=tab[g];
    				tab[g]=pivot;
    				d--;	
    			}
     
    			//g=d à ce stade
     
    			if((g-1)>start)  {
    				biDirectionSort(start,(g-1));
    			}
     
    			if(end>(g+1))  {
    				biDirectionSort((g+1),end);
    			}
    		}

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    si tu commencais par traduire l'algo en itératif au lieu de vouloir le faire directement en récursif, et si tu évitais de confondre "d=d+1" dans l'algo avec "d--;" dans la traduction?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    ...

    désolé, j'ai mal recopié l'algorithme en le mettant sur le forum. (je vais corriger ça sur l'algo de départ)
    Il faut utiliser la récursivité obligatoirement.

    Qu'est ce qui ne va pas sinon dans mon code java?

    note : je n'ai pas le droit d'utiliser de "break"


    merci d'avance.

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    désolé, pas vu la récursivité en fin de l'algo. Donc, dans ce cas, je constate que ton alog de départ a 2 niveaux de boucles imbriquées, alors que ton code java n'en a qu'un seul, ca doit déjà être un problème à la base J'avais pas relevé parce que je pensais que ta recursivité était pour supprimer la boucle extérieure

    ensuite, pas de break? C'est curieux

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    en mettant le tout dans une même boucle, je ne peux pas vérifier deux fois si g=d et ainsi éviter les permutations....

    je ne vois pas...


    merci d'avance.

  6. #6
    Membre éclairé Avatar de unknow0
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 452
    Points : 676
    Points
    676
    Par défaut
    Bonjour,

    tu peux tester deux fois si g=d en mettant toute la fin du code dans un if
    Mais ca risque de ne pas être tres jolis :s

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

Discussions similaires

  1. Probleme avec mon algorithme de tri
    Par kaygee dans le forum Langage
    Réponses: 6
    Dernier message: 09/01/2006, 21h23
  2. Probleme avec un algorithme
    Par vodevil dans le forum Langage
    Réponses: 2
    Dernier message: 20/11/2005, 01h56
  3. Réponses: 16
    Dernier message: 10/11/2005, 22h51
  4. algorithme de tri tableau :afficher que les éléments unique
    Par sofiane61 dans le forum Algorithmes et structures de données
    Réponses: 19
    Dernier message: 31/03/2005, 19h50
  5. probleme traduction C vers Delphi
    Par zinaif dans le forum Langage
    Réponses: 3
    Dernier message: 27/06/2003, 08h51

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