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 :

trier un tableau


Sujet :

Collection et Stream Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 42
    Par défaut trier un tableau
    Bonjour,

    j'ai un problème pour trier un tableau à 3 colonnes et à 1500 lignes.

    Dnas mon tableau il n'y a que des integer.

    Je dois rechercher toutes les lignes de nombres qui n'appartiennent pas à mon tableau.

    le début de mon programme est:

    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
    for (int a1=0;a1<1000;a1++) {
     for (int a2=0;a2<1000;a2++) {
       if (a2!=a1) {
         for (int a3=0;a3<1000;a3++) {
             if ((a3!=a1)&&(a3!=a2)) {
               int t [] [] = new int [3][1500];
                 for (int j=1;j<t.length;j++){
                   for ( int i=1;i<3;i++) {
                        if ((a1!=t[i][j])&&(a2!=t[i][j])&&((a3!=t[i][j])) {
     
    system.out.print ("a1:" + a1 + "a2:"+a2+"a3:" + a3);
                         }
                   }
                 } 
            }
         }
      }
     }
    }


    Le problème c'est que dans mon code, mes lignes formées des a1 a2 a3 vont être comparées avec une ligne uniquement de mon tableau et pas avec toutes.

    Si quelqu'un voit mon erreur.

    D'avance merci.

  2. #2
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Je dois rechercher toutes les lignes de nombres qui n'appartiennent pas à mon tableau.
    Tu veux faire une méthode prenant 3 entier et retournant un boolean??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public boolean estDansLeTableau(int i1, int i2, int 13){
     for(int i=0;i<1500;i++){
    if(tab[1][i] == i1 && tab[2][i] == i2 && tab[3][i] ==  i3){
    return true;//la séquence appartient au tableau
    }
    }
    return false; //n'appartient pas au tableau
    ps : "Je dois rechercher toutes les lignes de nombres qui n'appartiennent pas à mon tableau." = infini

  3. #3
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    Je ne comprend toujours pas la question

    Qu'es ce que tu appel ligne? Pour moi, ton tableau possède 1500 Lignes et chaque ligne est composé de 3 entier. C'est ça?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(int i=0;i<1500;i++){
    if(tab[1][i] == i1 && tab[2][i] == i2 && tab[3][i] ==  i3){
    return true;
    }
    Et le code ici présent regarde si la lignes contient 3 entiers i1,i2 et i3.
    (Je ne sais pas si ça peux aider)

    Ou alors c'est moi qui est un peu de mal aujourd'hui

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 42
    Par défaut
    Oui c'est ça. mon tableau à 1500 lignes et chaque ligne à 3 entiers.

    Mais ce que je n'arrive pas à faire, c'est de tester en prenant trois entiers au hasard (i1,i2,i3) si la ligne i1,i2,i3 appartient aux 1500 lignes de mon tableau. Si cette ligne (i1,i2,i3) n'y apprtient pas alors j'affiche i1, i2, i3.

    c'est plus clair?

  5. #5
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    A quoi correspondent (i1,i2,i3) ??? Il serait peut-être plus adapté de créer une classe.

    Cela permettrait d'avoir une structure de données plus simple


    a++

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 42
    Par défaut
    i1,i2,i3 sont des entiers inférieurs ou égaux à 1000 que je prend au hasard. je fais donc une boucle for pour i1, i2, i3.

    Et ensuite je regarde si ma "ligne" i1,i2,i3 appartient à mon tableau. Si elle n'y appartient pas, alors j'affiche i1,i2,i3

  7. #7
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    Il y a 2 problèmes dans ton code :
    1/ Effectivement, tu compare juste une ligne et tu affiches ( j'ai enfin compris).
    Le truc à faire c'est d'utiliser un boolean :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int t [] [] = new int [3][1500];
    boolean estDansLeTableau = false;
                 for (int j=1;j<t.length;j++){
                   if(blablabla){//blablabla = condition qui vérifie s'il est dans le tableau
                             estDansLeTableau = true;//La suivante des 3 entiers est dans le tableau   
                             break;//Pas la peine de parcourir le reste du tableau
                  }
                 }
                 if(estDansLeTableau == false){ System.out.println(i1+...);
    2/
    Il y a un problème avec la condition blablabla que tu utilise
    Imaginons qu'il y ai une ligne : 2 2 2
    imaginons maintenant que i1=56, i2 = 568, i3 = 2;
    Normalement il devrais t'afficher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for ( int i=1;i<3;i++) {
                        if ((a1!=t[i][j])&&(a2!=t[i][j])&&((a3!=t[i][j])) {
     
                        //S'il entre ici c'est que la ligne n'est pas dans le tableau
                        //Mais il n'entrera JAMAIS ici parceque a3 = 2 et que tu compare tous le temps a3
                        //Donc, par réciproque cela signifie que la ligne 56 568 2 appartient au tableau  = ERREUR
                         }
                   }
    Il faut juste regarder i1,i2 et i3 comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for (int j=1;j<t.length;j++){
                   if(a1==t[0][j])&&(a2==t[1][j])&&((a3==t[2][j])){
                             estDansLeTableau = true;
                             break;
                  }
                 }
    Tu vérifie ici la suite : 56 568 2.
    ps : pas la peine de vérifie : 568 56 2 ou 56 2 268 ou ... Parce qu'elle seront vérifier plutard lorsque i1,i2 et i3 changeront de valeur

    J'espère avoir été clair dans mes idées

  8. #8
    Membre très actif
    Profil pro
    Inscrit en
    Février 2010
    Messages
    767
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 767
    Par défaut
    Algorithmiquement parlant ton programme est horriblement lent.
    5 boucles imbriqués, c'est juste pas possible pour un algorithme de tri.

    Je te suggère comme tu es en java d'utiliser les interfaces fournit par le langage.
    Ton algorithme sera beaucoup plus puissant.

    http://fmora.developpez.com/tutoriel...aire/#L5.2.1.1

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Par défaut
    je ne suis pas sur de bien comprendre le bute de ton programme

    tu veux afficher toutes les lignes qui ne sont pas dans ton tableau de 1500 lignes?

    dans qu'elle bute? (peut être fait tu fausse route)
    ta structure de tableau a 2 dimensions n'est pas fausse mais est t'il possible de la remplacé par une List<Lignes> ? Où Lignes comporte t'est 3 valeurs?

Discussions similaires

  1. [Débutant] Trier un tableau en 2 boucles
    Par SaladinDev dans le forum Assembleur
    Réponses: 9
    Dernier message: 07/05/2005, 22h38
  2. Trier un tableau par rapport à un autre tableau
    Par deaven dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 02/05/2005, 09h27
  3. [Débutant] Remplir et trier un tableau
    Par james-dean dans le forum Assembleur
    Réponses: 15
    Dernier message: 01/05/2005, 17h40
  4. Trier un tableau par ordre croissant
    Par Halleck dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 01/11/2004, 00h04
  5. trier un tableau et compter des elements du tableau
    Par remi51 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 17/06/2002, 16h51

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