Ajouter des entiers dans un tableau a trier dans un ordre croissant

Messages postés
53
Date d'inscription
jeudi 28 février 2008
Statut
Membre
Dernière intervention
15 février 2010
- - Dernière réponse : tpoinsot
Messages postés
345
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
17 octobre 2014
- 30 sept. 2009 à 09:42
Bonjour à tous, je souhaiterais ajouter dans un tableau des entiers.
Le tableau est triés par ordre croissant.
Ainsi pour chaque ajout il me faut trouver la place de l'entier dans le tableau

Voici mon code

public static boolean insertion(int x, int taille, int [] tab){
boolean Bool = true;
for (int i = 0; i < taille; i++){
if (tab[i] == x){
Bool = false;
}
}
if (Bool = true){
for (int i = 0;i<taille-1;i++){
if (tab[i]>x){
int k = tab[i];
for (int j = taille; j>i; j--){
int l = tab[taille - 1];
tab[taille] = l;
}
tab[i+1] = k;
tab[i] = x;
taille = taille + 1;
}
}
}
return Bool;
}


Problème cela ne fonctionne pas :)
Lorsque jaffiche le tableau ds mon main cela me retourne un tableau de 0.
Est ce que quelqu'un peut maider
Afficher la suite 

2 réponses

0
Merci
Bonjour,

Il est facile de trier un tableau avec la classe Arrays (java.util.Arrays)

Tu ajoutes les entiers dans tab[] sans te préoccuper de l'ordre, et en fin d'ajout tu tries:

Arrays.sort(tab);

Cordialement,
...\ Dan /...
Commenter la réponse de Utilisateur anonyme
Messages postés
345
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
17 octobre 2014
3
0
Merci
bonjour,

si tu ne veux pas de l'array :

tout d'abord je suppose que tu voulais dire
if (Bool == true){

décalage :
for (int j = taille; j>i; j--){
int l = tab[j- 1];
tab[j] = l;
}

moi je ferai plutôt
1) trouver l'emplacement (attention à début, milieu et fin de tableau, et sortir de la boucle sitôt tropuvé
2) décalage éventuel
3) enregistrement du nouvel entier

            int k = taille;
            for (int i = 0; i < k; i++)
            {
                if (tab[i] > x)
                    k = i;
            }
            for (int j = taille; j > k; j--)
            {
                int l = tab[j - 1];
                tab[j] = l;
            }
            tab[k] = x;
            taille = taille + 1;


pour finir, je prévoirai une sortie de la première boucle dès que tu positionne Bool à false
Commenter la réponse de tpoinsot