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

Langage Java Discussion :

[Débutant] Question sur deux while imbriqués


Sujet :

Langage Java

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut [Débutant] Question sur deux while imbriqués
    Bonjour tout le monde et bonne année !

    Le code ci-dessous me permet de classer par ordre croissant les données d'un tableau :

    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
    //Tri
    		i=0;
    		//i va donc de 0 à 8	
    		while	(i < tab.length  )		{
    			//recherche du minimum
    			//initialisation avec le 1er élément
    			minimum = tab[i]; //
    			positionMinimum = i;
    			j=i;
    			while (j < tab.length )
    			{
    				if (tab[j] < minimum)
    				{
    					minimum = tab[j];
    					positionMinimum = j;
    				}
    				
    				j++;
    				
    			}	
    			//permuttation du minimum avec le 1er élément.
    				temp = tab[i];
    				tab[i] = tab[positionMinimum];
    				tab[positionMinimum] = temp;
    				
    				i++;
    				
    		}
    Je ne comprends pas comment réagissent les While.

    Est-ce que le while bleu passe dans toutes les valeurs du tableau avant de laisser la main au while vert ?

    Est-ce qu'on revient au while bleu ensuite ?

    Je ne comprends pas bien comment ça fonctionne, pourriez-vous s'il vous plait m'éguillier ?

    Voici l'entierté du code :

    Merci d'avance pour l'aide et mes meilleurs voeux.

    beegees

    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
    public class Ex06Chap08PG
     {
     public static void main(String[] args)
     {
     int taille = 10;
     int[] tableau = new int[taille];
     int positionMinimum, minimum, temp;
     int i = 0, j ;
     // on remplit le tableau avec des nombres aléatoires
     System.out.println("Tableau avant tri");
     for(i = 0; i < tableau.length; i++)
     {
     tableau[i] = (int) (Math.random() * 50);
     System.out.print(tableau[i] + " ");
     }
     System.out.println();
    // tri
     i = 0;
    //i est le compteur, i doit 
     while (i < tableau.length - 1 )
     {
     	System.out.println(i);
     // recherche du minimum
     // initialisation avec le 1er élément du tableau
     minimum = tableau[i];
     positionMinimum = i;
     j = i;
     while(j < tableau.length)
     {
     if (tableau[j] < minimum)
     {
     minimum = tableau[j];
     positionMinimum = j;
     }
     j++;
     }
     // permutation du minimum avec le 1er élément
     temp = tableau[i];
     tableau[i] = tableau[positionMinimum];
     tableau[positionMinimum] = temp;
     
     i++;
     }
     System.out.println("Tableau apres tri");
     for(i = 0; i < tableau.length; i++)
     {
     System.out.print(tableau[i] + " ");
     }
     System.out.println();
     }
     }

  2. #2
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    dans un premier temps le programme va rentrer dans la boucle bleu (premier while) B : boucle bleu V : boucle verte

    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
     
    B i=1 
     |-V j=1
     |-V j=2
     |-V j=3
     |-V j=4
     |-V j=...
     |-V j=X
    B i=2 
     |-V j=2 
     |-V j=3 
     |-V j=4 
     |-V j=... 
     |-V j=X 
    B i=3 
     |-V j=3 
     |-V j=4 
     |-V j=... 
     |-V j=X

    Sur le principe ta boucle bleu sert a parcourir toutes les cases du tableau, quand a ta boucle verte elle est chargé de trouver le plus petit element du tableau. Avant de passer au i suivant on place le plus petit element dans la cellule i, et on repart sur les autres valeurs qui reste (ce qui explique le j=i de maniere a ne pas reprendre les valeurs deja triées)
    Systèmes d'Informations Géographiques
    - Projets : Unlicense.science - Apache.SIS

    Pour un monde sans BigBrother IxQuick ni censure RSF et Les moutons

  3. #3
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour Eclesia,

    Merci pour ta réponse.

    Après avoir relu plusieurs fois ta réponse et mon code, j'ai enfin compris.

    Je te remercie encore pour ton aide.

    Passe une très bonne soirée.

    beegeees

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

Discussions similaires

  1. [Débutant] Question sur les lumières
    Par Mandalar dans le forum DirectX
    Réponses: 10
    Dernier message: 04/01/2006, 13h49
  2. [débutant] Questions sur le Transact-SQL
    Par nagty dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 05/07/2005, 17h43
  3. [parseur] [Débutant] Question sur les parseurs
    Par steph-n dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 02/05/2005, 19h17
  4. [Débutant] questions sur Visibroker
    Par Man Dak dans le forum CORBA
    Réponses: 1
    Dernier message: 29/06/2004, 23h02
  5. [débutant] question sur les #
    Par Ultros dans le forum C
    Réponses: 3
    Dernier message: 29/04/2004, 12h30

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