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 par minimum


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    bordeaux
    Inscrit en
    Novembre 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : bordeaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2012
    Messages : 22
    Par défaut tri par minimum
    Bonjour,

    je dois faire une méthode dans la classe Tableau qui me permette de trié un tableau avec des entiers pris au hasard et de les mettre dans un ordre croissant avec un tri par minimum.

    Quand je compile j'obtiens "Tableau trié : 2@5hk9z6m3.

    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
     
    public class tableaux {
     
        protected static int[] tab;
     
        public tableaux(int taille) {
            int max = 99;
            taille = 10;
            tab = new int[taille];
            for (int i = 0; i < taille; i++) {
                tab[i] = (int) (Math.random() * (max)) + 1;
                tab[i]++;
            }
        }
     
        public void afficheTableau() {
            for (int i = 0; i < 10; i++) {
                tab[i]++;
                Terminal.ecrireIntln(tab[i]);
            }
     
        }
     
        public  int[] triMinimum() {
            int debut = tab[0];
            int posMin = debut;
            for (int i = debut + 1; i < tab.length - 2; i++) {
                posMin = i;
                for (int j = i + 1; j <= tab.length - 1; j++) {
                    if (tab[j] < tab[posMin]) {
                        posMin = j;
                    }
                }
                int tampon = tab[i];
                tab[i] = tab[posMin];
                tab[posMin] = tampon;
     
     
            }
            Terminal.ecrireStringln("Tableau trié : "+tab);
     
                    return tab;
     
        }
     
        public static void main(String[] args) {
            tableaux tab1 = new tableaux(12);
            tab1.afficheTableau();
            tab1.triMinimum();
     
        }
     
    }

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par chikita Voir le message
    Quand je compile j'obtiens "Tableau trié : 2@5hk9z6m3.
    Vraiment ? Ah, mince.
    Eh bien, il semblerait que si tu essaies de faire la String "machin: " + tab, ça affiche n'importe quoi... Je suis sûr qu'on verra pourquoi plus tard.
    Du coup, ça veut dire que tu vas devoir afficher ton tableau toi-même, au lieu de compter sur Java pour le faire.

    (On verra plus tard comment faire pour que Java l'affiche lui-même.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur Java/JavaEE
    Inscrit en
    Août 2014
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java/JavaEE

    Informations forums :
    Inscription : Août 2014
    Messages : 194
    Par défaut
    Et bien il va falloir que tu parcoure ton tableau et d'afficher a chaque fois la valeur à l'indice de ta boucle, (mais ce que tu es entrain de faire avec ce system.out c'est d'afficher l'adresse du tableau enfin je ne suis pas sûr de ça)

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Par défaut
    ton algo fait le contraire de ce que tu souhaites : cet algo fait un tri par ordre décroissant.
    remplace ça:
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //triMinimum()
                    if (tab[j] < tab[posMin]) {
                        posMin = j;
                    }
    par :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //triMinimum()
                    if (tab[j] > tab[posMin]) {
                        posMin = j;
                    }

    pour afficher ton tableau rien de plus simple qu'une boucle:
    Code java : 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
     
     public  int[] triMinimum() {
            int debut = tab[0];
            int posMin = debut;
            for (int i = debut + 1; i < tab.length - 2; i++) {
                posMin = i;
                for (int j = i + 1; j <= tab.length - 1; j++) {
                    if (tab[j] > tab[posMin]) {
                        posMin = j;
                    }
                }
                int tampon = tab[i];
                tab[i] = tab[posMin];
                tab[posMin] = tampon;
     
     
            }
    	       	System.out.println("tab trié");
     
    	 for(int element : tab )
    		 Terminal.ecrireStringln("Tableau trié : "+element +"\t");
                    return tab;
     
        }

  5. #5
    Membre averti
    Femme Profil pro
    bordeaux
    Inscrit en
    Novembre 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : bordeaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2012
    Messages : 22
    Par défaut
    merci pour ta réponse, je vais chercher car j'aimerais pourvoir faire appel a méthode, je pense qu'il va me falloir une autre boucle pour afficher le résultat.

    pour le moment j'ai encore du mal, je n'ai pas évident quand on débute mais l'important est que cela me plaise.

    Dans tout les cas c'est sympa d'avoir un peu d'aide car parfois on ne voit pas ou se trouve nos erreurs

  6. #6
    Membre averti
    Femme Profil pro
    bordeaux
    Inscrit en
    Novembre 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : bordeaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2012
    Messages : 22
    Par défaut
    ca y est quand je compile cela fonctionne bien a part que mon tableau n'est pas trié.

    la console choisit des entiers au hasard et après elle me marque :

    tab trié

    Tableau trié : 46
    Tableau trié : 22
    Tableau trié : 66
    Tableau trié : 87
    Tableau trié : 16

    etc..

    Alors que je devrais avoir
    Tableau trié : 87
    Tableau trié : 66
    Tableau trié : 46
    Tableau trié : 22
    Tableau trié : 16

  7. #7
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Dis-moi, ta variable int debut...
    Tu lui donnes quelle valeur, et quel effet ça va donner ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Par défaut
    le principe d'un tri par minimum successif consiste à identifier, par itération, l'élément le plus petit, on le positionne en tête de tableau(côté gauche) et on répète l'opération pour les éléments suivants(éléments après rangement):

    Code java : 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
     
     public  int[] triMinimum() {
            int posMin ;
            for (int i = 0; i < tab.length - 1; i++) {
                posMin = i;
                for (int j = i + 1; j < tab.length ; j++) {
                    if ( tab[posMin]>tab[j] ) {
                        posMin = j;
                    }
                }
    	 int tampon =tab[posMin];
    	tab[posMin]=tab[i];
    	tab[i]=tampon;
     
     
            }
           // Terminal.ecrireStringln("Tableau trié : ");
    	 System.out.println("tab trié");
    	System.out.print("[");
    	 for(int element : tab ){
    	  System.out.print(element +"\t");
           //Terminal.ecrireStringln( element+"\t");
     
    	}
    	System.out.print("]\n");
              return tab;
     
        }

  9. #9
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    armel18, pour un débutant, ça n'a aucun intérêt de copier/coller le code fini d'un connaisseur. Pour trier un tableau, il suffit d'utiliser Arrays.sort(), ce n'est pas le tri par sélection mais à ce compte-là on s'en fiche -_-°...

    Si tu veux que tes conseils servent à quelque chose, parle plutôt de ce qui ne va pas dans le code que le débutant a construit lui-même.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. OCAML Tri par selection du minimum
    Par Gregoiredu89 dans le forum Caml
    Réponses: 1
    Dernier message: 25/03/2014, 06h24
  2. Tri par minimum
    Par Franck.H dans le forum Télécharger
    Réponses: 0
    Dernier message: 30/11/2010, 15h48
  3. Tri par sélection du minimum récursif
    Par thechieuse dans le forum Pascal
    Réponses: 2
    Dernier message: 05/11/2008, 16h03
  4. Tri par ordre alphabétique
    Par orus8 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 17/04/2003, 19h27
  5. Tri par fusion d'un tableau
    Par Mailgifson dans le forum C
    Réponses: 5
    Dernier message: 12/12/2002, 14h53

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