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 :

tri rapid java


Sujet :

avec Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut tri rapid java
    Bonjour,
    en fait le problème que j'expose est un problème de programmation plutôt que de java: un tri rapide d'un ArrayList.
    il parait que j'ai une boucle infinie parce que le programme se plante lors de l'exécution. je sais pas si j'ai fait un dépassement au niveau d'une boucle. Si quelqu'un peut m'aider à dépasser ce problème je serais très reconnaissante.
    voila la classe que j'ai écrit:

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    import java.util.ArrayList;
     
    /**
     * 
     */
     
    /**
     * @author 
     *
     */
    public class TriRapidCroissant {
     
    	/**
             * 
             */
    	public TriRapidCroissant() {
    		// TODO Auto-generated constructor stub
    	}
     
    	/**
             * @param args
             */
    	private void permuter(couple couple1, couple couple2) {
    		// TODO Auto-generated method stub
    		couple cp;
    		cp=couple1;
    		couple1=couple2;
    		couple2=cp;
    	}
    	public void TrierRapidCroissant(ArrayList <couple> List, int deb, int fin){
    		// trier dans un ordre croissant de distance: les plus bons sont ceux qui ont la moindre distance
    		int i=deb; int j=fin; float pivot=List.get((i+j)/2).getscnd();
    		do{
     
    			while( List.get(i).getscnd()<pivot)
    			{i++;
    			}
    			while( List.get(j).getscnd()>pivot)
    			{j--;
    			}
    			if(i<j)
    			{
    				permuter(List.get(i),List.get(j));
    				i++;
    				j--;
    			}
    		}	while (i>j);
    		if (deb<j)
    		{
    			//System.out.println("bbbbbbb");
    			TrierRapidCroissant(List,deb,j);
    		}
    		if (i<fin){
    			TrierRapidCroissant(List,i,fin);
    		}
    }
     
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		ArrayList<couple> Liste =new ArrayList<couple>();
    		TriRapidCroissant TR= new TriRapidCroissant();
    		Liste.add(new couple("d11",(float) 0.8));
    		Liste.add(new couple("d12",(float) 0.3));
    		Liste.add(new couple("d13",(float) 0.2));
    		Liste.add(new couple("d14",(float) 0.5));
    		Liste.add(new couple("d21",(float) 0.6));
    		Liste.add(new couple("d22",(float) 0.37));
    		Liste.add(new couple("d23",(float) 0.8));
     
    		int deb=0; int fin= Liste.size()-1;
    		TR.TrierRapidCroissant(Liste, deb, fin);
     
    		for(int i=0; i< Liste.size();i++){
    		System.out.println(Liste.get(i).getfst());
    		System.out.println(Liste.get(i).getscnd());
    		}
    	}
    	}

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	private void permuter(couple couple1, couple couple2) {
    		// TODO Auto-generated method stub
    		couple cp;
    		cp=couple1;
    		couple1=couple2;
    		couple2=cp;
    	}
    Cette méthode ne fait pas ce que tu pense qu'elle fait. La permutation des variable est entièrement locale à la méthode. Les variable sont toujours passées par copie en java, jamais par référence. Vu l'appel, tu devrais faire plutot un méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    permuter(List liste, int index1, int index2)
    qui change le contenu de la liste.

  3. #3
    Membre habitué
    Inscrit en
    Mars 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2008
    Messages : 254
    Points : 188
    Points
    188
    Par défaut
    Bonjour,


    Merci de trouver la solution ici:

    http://java.developpez.com/faq/java/...rierCollection


    Cordialement,


Discussions similaires

  1. probleme tri en java
    Par kloe dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 18/10/2006, 23h01
  2. tri rapide étéractif
    Par renardmp dans le forum Général Python
    Réponses: 3
    Dernier message: 20/02/2006, 02h12
  3. Tri rapide
    Par mikees dans le forum Assembleur
    Réponses: 1
    Dernier message: 19/12/2005, 21h53
  4. Tri Rapide sur un CLIST
    Par ensisoft dans le forum MFC
    Réponses: 9
    Dernier message: 13/12/2005, 23h22
  5. Tri rapide
    Par DBBB dans le forum Algorithmes et structures de données
    Réponses: 11
    Dernier message: 10/12/2004, 17h54

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