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

Collection et Stream Java Discussion :

tri d'un tableau en deux dimension


Sujet :

Collection et Stream Java

  1. #1
    En attente de confirmation mail
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Points : 96
    Points
    96
    Par défaut tri d'un tableau en deux dimension
    J'ai parcouru la faq, mais je n'ai trouvé qu'une réponse pour un tableau en une dimension :
    si j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int tab [][] = new int [64][2];
    comment le trier sur la première dimension (64).

    Merci beaucoup

    Philippe

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    949
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 949
    Points : 1 857
    Points
    1 857
    Par défaut
    Il suffit de le considérer comme un tableau a une seule dimension, dont chaque élément est lui-même un tableau.

  3. #3
    En attente de confirmation mail
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Points : 96
    Points
    96
    Par défaut
    Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    import java.util.*
    public class Test {
            public static void main(String[] args) {
                    int[] []tab = new int[64][2];
                    //initialisation du tableau
                    Arrays.sort(tab);
                 }
    }
    ceci tri mon tableau sur la première dimension ?

    Philippe

  4. #4
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Il faudrait que tu crées un Comparator qui te permette de comparer la 2ème dimension, parce que trier des tableaux d'entiers entre eux, ce n'est pas naturel - il y a beaucoup d'ordres possibles.

  5. #5
    En attente de confirmation mail
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Points : 96
    Points
    96
    Par défaut
    j'ai écrit ceci :

    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
     
    import java.util.*;
    public class Test {
            public static void main(String[] args) {
    		try
    		{
                    int[] []tab = new int[64][2];
                    for(int i=1; i<2;i++)
    			 for(int j=64; i>1-1;j--)
    				tab[i][j]=i;
                    Arrays.sort(tab);
    		for(int i = 0; i < 2; i++)
    			for(int j=0; i<64;j++)
                            	System.out.println(tab[i][j]);
    		}
    		catch (ArrayIndexOutOfBoundsException e) {
    		System.out.println("mauvais indice");
     
     		}
     
                 }
    	}
    en réponse, j'ai "mauvais indice" l'exception est interceptée, je ne voudrais pas poser deux question et dire pourquoi l'exception est-elle interceptée, surtout que j'ai essayé d'inverser i et j pour le même résultat, mais au moins une question :
    est-il exact ?

    (le programme initialisait le vecteur avec un ordre décroissant et souhaitait rétablir l'ordre croissant)

    Précédemment, j'ai essayé, trouvant plus logique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for(int i=64; i>2;i--)
    	for(int j=0; i<2;j++)
    "mauvais indice" malgre tout

    Philippe

  6. #6
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Tu fais plusieurs boucles sur tes tableaux.
    Un tableau du genre int[64][2] se parcourt avec des indices qui, curieusement, seront du genre [0 à 63][0 à 1].

    Sinon, il n'existe pas d'ordre naturel sur les tableaux de deux entiers, donc il faut utiliser Arrays.sort(Object[], Comparator).
    Ne te reste plus qu'à coder le comparator selon ton souhait.

  7. #7
    Membre habitué
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Décembre 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Décembre 2005
    Messages : 109
    Points : 161
    Points
    161
    Par défaut
    Attention !
    Tu initialise j
    Tu compare i à 64 <-- Erreur, ce n'est pas la bonne variable
    Tu incrémente j

    Et tu as fait cette erreur à chaque fois.
    S'il n'y avait pas eu d'exception, ça partait probablement en boucle infinie.

  8. #8
    En attente de confirmation mail
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Points : 96
    Points
    96
    Par défaut
    merci de me l'avoir fait remarqué, mais je ne pourrais le remettre en ordre que demain, il est sur mon ordi au bureau !

    mais certainement, merci, c'est le genre de betise que je n'aurais pas vérifiée ou bien au bout d'une heure de déprime !

    Philippe

  9. #9
    En attente de confirmation mail
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Points : 96
    Points
    96
    Par défaut
    Voilà le probleme est résolu, et un grand merci
    je crée un tableau d'entiers en 2 dim et j'applique Arrays.sort à l'une d'entre elle et elle est triée.
    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
     
    import java.util.*;
    public class Test {
            public static void main(String[] args) {
    		try
    		{
                    int[] []tab = new int[2][64];
                    for(int i=0; i<2;i++)
    			 for(int j=0; j<64;j++)
    				tab[i][j]=63-j;
                    Arrays.sort(tab[0]);
    		for(int i = 0; i < 2; i++)
    			{
    			for(int j=0; j<64;j++)
                            	System.out.print(tab[i][j]+" ");
    				System.out.println();
    			}
    		}
    		catch (ArrayIndexOutOfBoundsException e) {
    		System.out.println("mauvais indice");
     
     		}
     
                 }
    	}
    mais, en fait elle sont indépendantes (les dimensions), si j'ai le même tableau (demographique par exemple la personne vit à telle altitude et ses résultats au vu de tests médicaux évolue selon cette altitude) comment attacher les deux dim ensemble ? (je trie l'altitude et j'ai le resultat médical correspondant sur le même indice de la deuxieme dim ?

Discussions similaires

  1. Tri d'un tableau a deux dimension PHP
    Par quichaci dans le forum Langage
    Réponses: 5
    Dernier message: 11/03/2014, 18h53
  2. Réponses: 2
    Dernier message: 08/05/2009, 11h29
  3. [PERL] Trier un tableau a deux dimensions
    Par piregwan dans le forum Langage
    Réponses: 3
    Dernier message: 26/12/2005, 22h29
  4. Réponses: 6
    Dernier message: 26/11/2005, 19h55
  5. Réponses: 13
    Dernier message: 13/10/2005, 16h03

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