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

Contribuez Java Discussion :

Trier un tableau d'entiers de façon croissante ou décroissante en Java


Sujet :

Contribuez Java

  1. #1
    Invité
    Invité(e)
    Par défaut Trier un tableau d'entiers de façon croissante ou décroissante en Java
    Ca peux toujours servir à quelqu'un :

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
     
    private void lancermenu() throws IOException {
     
    		int tab[] = {1000, 200, 700, 711, 102, 103, 252, 251, 253};
     
    		triBulleCroissant(tab);
     
    		for(int i=0; i<tab.length; i++){
    			System.out.println(tab[i]);
    		}
     
    		triBulleDecroissant(tab);
     
    		System.out.println("\n");
     
    		for(int i=0; i<tab.length; i++){
    			System.out.println(tab[i]);
    		}
     
    	}// fin private void lancermenu
     
    	public static void triBulleCroissant(int tableau[]) {
    		int longueur = tableau.length;
    		int tampon = 0;
    		boolean permut;
     
    		do {
    			// hypothèse : le tableau est trié
    			permut = false;
    			for (int i = 0; i < longueur - 1; i++) {
    				// Teste si 2 éléments successifs sont dans le bon ordre ou non
    				if (tableau[i] > tableau[i + 1]) {
    					// s'ils ne le sont pas, on échange leurs positions
    					tampon = tableau[i];
    					tableau[i] = tableau[i + 1];
    					tableau[i + 1] = tampon;
    					permut = true;
    				}
    			}
    		} while (permut);
    	}
     
    	public static void triBulleDecroissant(int tableau[]) {
    		int longueur = tableau.length;
    		int tampon = 0;
    		boolean permut;
     
    		do {
    			// hypothèse : le tableau est trié
    			permut = false;
    			for (int i = 0; i < longueur - 1; i++) {
    				// Teste si 2 éléments successifs sont dans le bon ordre ou non
    				if (tableau[i] < tableau[i + 1]) {
    					// s'ils ne le sont pas, on échange leurs positions
    					tampon = tableau[i];
    					tableau[i] = tableau[i + 1];
    					tableau[i + 1] = tampon;
    					permut = true;
    				}
    			}
    		} while (permut);
    	}
    Ces lignes de codes se basent sur un algorithme de tri à bulles.


  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 268
    Points : 199
    Points
    199
    Par défaut
    Sinon, pour trier un tableau, il y a les méthodes de la classe Arrays (uniquement pour un tri croissant) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Arrays.sort(new int[] { 3,4,5 });
    A noter que ces méthodes peuvent trier n'importe quel tableau d'objet, en utilisant l'interface "Comparator".
    Pensez au tag quand votre problème est réglé !

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    Citation Envoyé par alino-91 Voir le message
    Ca peux toujours servir à quelqu'un :
    [...]
    Ces lignes de codes se basent sur un algorithme de tri à bulles.
    Le tri à bulle, bien connu des étudiants en info qui ont tous eu un jour ou l'autre à l'implémenter, à complexité en O(n²) et donc à réserver uniquement aux exercices scolaires...
    Si vous devez trier une collection, utilisez les classes Java prévues pour ça, comme l'a indiqué JohnNC. Inutile de réinventer la roue, surtout si c'est pour obtenir quelque chose de moins performant.
    Donc oui, "ça peut toujours servir à quelqu'un" : à un étudiant qui préfère copier son exercice plutôt que de réfléchir par lui même...

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 338
    Points : 0
    Points
    0
    Par défaut
    svp, es que je peux avoir le programme en langage algorithmique ! (pseudo code)

  5. #5
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Points : 12 815
    Points
    12 815
    Par défaut
    Donc oui, "ça peut toujours servir à quelqu'un" : à un étudiant qui préfère copier son exercice plutôt que de réfléchir par lui même...
    Ca peut aussi servir à un programmeur, qui connait principalement le Java, et qui voudrais coder par lui-même des algo de tri, par exemple pour apprendre.

    Ca pourrait aussi lui servir à ne pas utiliser Arrays.sort() qui utilise un quick sort (cf. http://docs.oracle.com/javase/6/docs....html#sort(int[])) comme le conseille JohnNC car il existe de nombreux cas dans lequel cet algo est loin d'être le meilleur. En particulier le quick sort est par définition mauvais lorsqu'on travaille sur une liste déjà en grande partie ordonnée, cas dans lequel des tris par insertion monotonie sont plus performants.

    Statistiquement, est ce que ça peut arriver d'avoir des listes quasi-triées ? Heu genre presque tout le temps dans le monde réel... Du coup, connaitre ces tris, ça permet de savoir que pour rendre un quick sort performant, il faut commencer par mélanger la liste...

    Du coup je trouve très intéressante l'initiative proposée par alino-91 et je l'en remercie pour cette variation du tri à bulle que je ne connaissais pas.
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par thierryler Voir le message
    Ca pourrait aussi lui servir à ne pas utiliser Arrays.sort() qui utilise un quick sort
    Pas tout à fait, si tu regarde bien la doc, certains appels à sort() utilisent quicksort (n*log(n) moyen) mais d'autres utilisent un merge sort (n*log(n) garanti)!

  7. #7
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Points : 12 815
    Points
    12 815
    Par défaut
    Effectivement. Du coup, même sur une liste déjà triée, ça peut valoir le coup. Car les tris auxquels je pense, au mieux il ne peuvent pas descendre sous le n
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  8. #8
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Points : 181
    Points
    181
    Par défaut
    Bonjour,
    je viens confirmer les commentaires précédents. Je suis en deuxième année de licence informatique, et nous utilisons assez souvent des algos pour trier des tableaux, actuellement calculer la complexité de l'algo... Toutefois, il me semble que dans la plupart des cas, si besoin est de coder un algo de tri, le tri par sélection est dans la plupart des cas préférable. Enfin ça demande à être vérifié

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/02/2012, 23h37
  2. trier un tableau par odre croissant
    Par bakman dans le forum VB.NET
    Réponses: 6
    Dernier message: 13/05/2011, 23h40
  3. Classer/ranger de façon croissante un tableau
    Par neogamaes dans le forum MATLAB
    Réponses: 2
    Dernier message: 20/05/2010, 14h53
  4. Trier un tableau d'entiers
    Par you_go dans le forum Fortran
    Réponses: 2
    Dernier message: 04/08/2009, 16h10
  5. Trier un tableau par ordre croissant
    Par Halleck dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 01/11/2004, 01h04

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