Tri par bulle
domxaline
-
domxaline -
domxaline -
Bonjour,
mon prg prend pas en compte la première valeur:
5,7, 8, 6
et une autre question est quel est le rôle de taille-1;//signifie 4-1 ou 3-1;
debug garde toujours taille 4
for ( i=0; i<taille-1; i++ )
quelqu'un peut m'aider svp
mon prg prend pas en compte la première valeur:
5,7, 8, 6
et une autre question est quel est le rôle de taille-1;//signifie 4-1 ou 3-1;
debug garde toujours taille 4
for ( i=0; i<taille-1; i++ )
import java.util.Scanner;
public class Test3
{
public static void main(String[] args)
{
int i = 0;
int tab[] = {5,7,8,6};
boolean maxi = true;
int taille = tab.length;
while(maxi)
{
maxi = false;
for ( i=0; i<taille-1; i++ )
//for ( i=1; i<taille; i++ )
{
if ( tab[i] > tab[i+1] )
{
int temp = tab[i];
tab[i] = tab[i+1];
tab[i+1] = temp;
maxi = true;
}
System.out.println("Trié les éléments en ordre croissant "+(i+1)+":"+tab[i+1]);
}
System.out.println(" ** ");
}
}
}
quelqu'un peut m'aider svp
A voir également:
- Tri par bulle
- Excel trier par ordre croissant chiffre - Guide
- Logiciel tri photo - Guide
- Video bulle whatsapp - Accueil - Messagerie instantanée
- Whatsapp couleur bulle - Accueil - Messagerie instantanée
- Excel trier par date ne fonctionne pas ✓ - Forum Excel
2 réponses
Salut,
Ton 5 n'est pas pris en compte à cause de ton
Ton taille-1 signifie 4-1, car ton array comporte 4 éléments sa longueur est donc 4.
Si tu veux que ton code fonctionne correctement, il faut que tu retires ton
Ensuite tu rajoutes une condition qui vérifie que i est inférieur à taille-1, pour pas que tu cherche à accéder à un élément dont l'indice dépasse l'indice max de ton tableau.
Pour finir dans ton
N'hésite pas à me demander si j'ai pas été suffisamment clair !
Ton 5 n'est pas pris en compte à cause de ton
tab[i+1], à la première itération de ta boucle for, i vaut 0, 0+1=1, donc ton 5 qui est l'élément d'indice 0 n'est pas affiché.
Ton taille-1 signifie 4-1, car ton array comporte 4 éléments sa longueur est donc 4.
Si tu veux que ton code fonctionne correctement, il faut que tu retires ton
taille-1et que tu remplaces par
taille.
Ensuite tu rajoutes une condition qui vérifie que i est inférieur à taille-1, pour pas que tu cherche à accéder à un élément dont l'indice dépasse l'indice max de ton tableau.
Pour finir dans ton
printlnenlève le +1 dans
tab[i+1]et tout devrait rouler !
N'hésite pas à me demander si j'ai pas été suffisamment clair !
j'ai corrigé mon prg
mais, s'il fallait écrire:
"ton println enlève le +1 dans tab[i+1] et tout devrait rouler "
pouvez vous m'expliquer cette parti de ce code:
import java.util.Scanner;
public class Test3
{
public static void main(String[] args)
{
int i = 0;
int tab[] = {5,7,8,6};
boolean maxi = true;
int taille = tab.length;
while(maxi)
{
maxi = false;
for ( i=0; i<taille; i++ )
{
if(i<taille-1)
{
if ( tab[i] > tab[i+1] )
{
int temp = tab[i];
tab[i] = tab[i+1];
tab[i+1] = temp;
maxi = true;
}
}
System.out.println("Trié les éléments en ordre croissant "+(i+1)+":"+tab[i]);
}
System.out.println(" ** ");
}
}
}
mais, s'il fallait écrire:
"ton println enlève le +1 dans tab[i+1] et tout devrait rouler "
pouvez vous m'expliquer cette parti de ce code:
int temp = tab[i];
tab[i] = tab[i+1];
tab[i+1] = temp;