Je ne sais coder en Java et il est tard mais il me semble voir le problème:
Code :
- public static void trier(int tabInt[]){
- boolean permut = false;
- int tampon = 0;
- int i;
- while(!permut){
- permut = false;
- for(i=0; i<TAILLE-1; i++){
- if(tabInt[i] > tabInt[i+1]){
- tampon = tabInt[i];
- tabInt[i] = tabInt[i+1];
- tabInt[i+1] = tampon;
- permut = true;
- }
- }
- }
|
En gros ton code c'est: Tant que permut est égal a false, on définit permut égal a false, ensuite on fait une boucle et si deux éléments doivent être inversés, permut est mis a true.
Le principe du tri a bulles, c'est de faire une boucle qui ne s'arrête dès qu'il ne reste plus d'inversions à effectuer dans le tableau a trier. Or dans ton cas, tu dis que dès qu'il faut inverser deux éléments de ce tableau, la boucle doit s'arrêter.
Perso je verrais plus un truc dans ce style:
Code :
- public static void trier(int tabInt[]){
- boolean permut = false;
- int tampon = 0;
- int i;
- while(!permut){
- permut = true;
- for(i=0; i<TAILLE-1; i++){
- if(tabInt[i] > tabInt[i+1]){
- tampon = tabInt[i];
- tabInt[i] = tabInt[i+1];
- tabInt[i+1] = tampon;
- permut = false;
- }
- }
- }
|
Ici la boucle ne va s'arrêter que si elle ne rentre pas dans la condition (puisque dès le début de la boucle on met permut a true, et que ta boucle ne continue que si permut est égal a false). Or, si ton algorithme ne rentre pas dans la boucle, c'est tout simplement qu'il n'y a plus de tri a effectuer donc on peut s'arrêter.
---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010