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 :

Trier un tableau de String dans l'ordre croissant


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2020
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2020
    Messages : 39
    Points : 13
    Points
    13
    Par défaut Trier un tableau de String dans l'ordre croissant
    Bonjour à tous,
    tout est mentionné dans le titre, mais évidemment (il y a toujours un "mais" ) la fonction que j'ai faites ne fonctionne pas, mais je pense avoir un très bonne base, voici mon code :
    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
     
    public static void tri (String[] t) {
    		String temp;
    		for(int k =0;k<t.length-1;k++) {
    			int resul = t[k].compareTo(t[k+1]);
    		for(int i = t.length-1 ; i>=1 ; i--)
    		{
     
    			for(int j = 0 ; j<i ; j++)
    				if(resul > 0 || resul < 0)
    				{
    					temp = t[j+1];
    					t[j+1]=t[j];
    					t[j]=temp;         
    				}
     
    		}
    		System.out.print(t[k]+ " ");
    		}
     
     
    		  // Ã* modifier
    	}
    Comme vous vous en doutez , avec "int resul = t[k].compareTo(t[k+1]);" je compare k avec k+1 et je stocke ça dans "resul" et si resul est supérieur ou inférieur à 0 je remplace les valeurs (pour trier dans l'ordre croissant), mais évidemment, ça ne fonctionne pas...

  2. #2
    Membre averti Avatar de let_me_in
    Inscrit en
    mai 2005
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : mai 2005
    Messages : 441
    Points : 437
    Points
    437
    Par défaut
    voici une solution avec seulement 2 boucles imbriquées:

    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
    public static void tri (String[] t) {
    		// index indiquant l'element le plus grand de list a partir d'une certaine position
    		int swapIndex;
     
     
    		String temp;
     
     
    		for(int k =0;k<t.length;k++) {
    			// on suppose que t[k] est l'element le plus petit de la list, donc on initialize swapIndex a -1. si sa valeur
    			// change dans la prochaine boucle, c'est qu'on a trouvé un élément plus petit et que ce dernier doit occuper 
    			// la position 'k'
     
    			swapIndex = -1;
     
    			for (int i=k; i < t.length ; i++ ) {
    				if (t[i].compareTo(t[k]) > 0) 
    					swapIndex = i;
     
    			}
     
    			// on fait le swap
    			if (swapIndex != -1) {
    				temp = t[k];
    				t[k] = t[swapIndex];
    				t[swapIndex] = temp;
    			}
     
    			System.out.print(t[k] + " ");
    		}
     
    	}
    qui dit Dieu n'existe pas dis que les programmes tournent sans processeur.

  3. #3
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    juillet 2006
    Messages
    1 233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : juillet 2006
    Messages : 1 233
    Points : 1 805
    Points
    1 805
    Par défaut
    désolé de chercher des poils sur les oeufs: mais pour comparer les chaînes ce qui est politiquement correct c'est un java.text.Collator
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (les exercices simplifiés liés à mon bouquin sur Java : http://scrountch.info/java/exercices.html )

  4. #4
    Membre averti Avatar de let_me_in
    Inscrit en
    mai 2005
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : mai 2005
    Messages : 441
    Points : 437
    Points
    437
    Par défaut
    Merci pour l'info professeur shadoko , a vrai dire je ne connaissais pas cette classe, donc j'ai appris une chose aujourd'hui

    voici le meme algorithme avec Collator:

    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 static void tri (String[] t) {
    		// index indiquant l'element le plus grand de list a partir d'une certaine position
    		int swapIndex;
     
     
    		String temp;
     
    		Collator frCollator = Collator.getInstance(new Locale("fr","FR"));
     
     
    		for(int k =0;k<t.length;k++) {
    			// on suppose que t[k] est l'element le plus grand de la list, donc on initialize swapIndex a -1. si sa valeur
    			// change dans la prochaine boocle, c'est qu'on a trouve un element plus grand et que ce dernier doit occuper 
    			// la position 'k'
     
    			swapIndex = -1;
     
    			for (int i=k; i < t.length ; i++ ) {
    				if (frCollator.compare(t[i], t[k]) < 0) 
    					swapIndex = i;
     
    			}
     
    			// on fait le swap
    			if (swapIndex != -1) {
    				temp = t[k];
    				t[k] = t[swapIndex];
    				t[swapIndex] = temp;
    			}
     
    			System.out.print(t[k] + " ");
    		}
     
    	}
    qui dit Dieu n'existe pas dis que les programmes tournent sans processeur.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2020
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2020
    Messages : 39
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par let_me_in Voir le message
    voici une solution avec seulement 2 boucles imbriquées:

    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
    public static void tri (String[] t) {
    		// index indiquant l'element le plus grand de list a partir d'une certaine position
    		int swapIndex;
     
     
    		String temp;
     
     
    		for(int k =0;k<t.length;k++) {
    			// on suppose que t[k] est l'element le plus petit de la list, donc on initialize swapIndex a -1. si sa valeur
    			// change dans la prochaine boucle, c'est qu'on a trouvé un élément plus petit et que ce dernier doit occuper 
    			// la position 'k'
     
    			swapIndex = -1;
     
    			for (int i=k; i < t.length ; i++ ) {
    				if (t[i].compareTo(t[k]) > 0) 
    					swapIndex = i;
     
    			}
     
    			// on fait le swap
    			if (swapIndex != -1) {
    				temp = t[k];
    				t[k] = t[swapIndex];
    				t[swapIndex] = temp;
    			}
     
    			System.out.print(t[k] + " ");
    		}
     
    	}
    Merci de ta réponse ! Mais j'ai testé , ta fonction ne fonctionne pas, ça ne trie pas le tableau

  6. #6
    Membre averti Avatar de let_me_in
    Inscrit en
    mai 2005
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : mai 2005
    Messages : 441
    Points : 437
    Points
    437
    Par défaut
    peux tu etre plus specifique ? c'est quoi l'argument et c'est quoi le resultat ?
    qui dit Dieu n'existe pas dis que les programmes tournent sans processeur.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2020
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2020
    Messages : 39
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par let_me_in Voir le message
    peux tu etre plus specifique ? c'est quoi l'argument et c'est quoi le resultat ?
    En gros elle ne trie pas bien, le résultat n'est pas le bon

Discussions similaires

  1. Réponses: 6
    Dernier message: 26/11/2017, 16h38
  2. Enregistrer un tableau de String dans un fichier.
    Par Heavy Metal Hero dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 23/04/2008, 21h19
  3. [c#] tableau de string dans un tableau
    Par PoZZyX dans le forum Windows Forms
    Réponses: 4
    Dernier message: 30/01/2008, 21h13
  4. Réponses: 2
    Dernier message: 12/06/2006, 18h18
  5. Ranger un tableau de String dans ma HashMap
    Par jeyce dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 26/08/2004, 22h41

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