198 votes

Trier un tableau en Java

J'essaie de faire un programme qui consiste en un tableau de 10 entiers qui ont tous une valeur aléatoire, jusqu'à présent tout va bien.

Cependant, je dois maintenant les trier par ordre décroissant de valeur et les imprimer à l'écran.

(Désolé d'avoir autant de code pour un programme aussi petit, je ne suis pas très doué avec les boucles, je viens juste de commencer à travailler avec Java).

public static void main(String args[])
{
    int [] array = new int[10];

    array[0] = ((int)(Math.random()*100+1));
    array[1] = ((int)(Math.random()*100+1));
    array[2] = ((int)(Math.random()*100+1));
    array[3] = ((int)(Math.random()*100+1));
    array[4] = ((int)(Math.random()*100+1));
    array[5] = ((int)(Math.random()*100+1));
    array[6] = ((int)(Math.random()*100+1));
    array[7] = ((int)(Math.random()*100+1));
    array[8] = ((int)(Math.random()*100+1));
    array[9] = ((int)(Math.random()*100+1));

    System.out.println(array[0] +" " + array[1] +" " + array[2] +" " + array[3]
    +" " + array[4] +" " + array[5]+" " + array[6]+" " + array[7]+" " 
    + array[8]+" " + array[9] );        

}

220voto

rauschen Points 1880

Ajoutez la ligne avant println et votre tableau sera trié.

Arrays.sort( array );

15 votes

Pourrais-je obtenir un exemple d'utilisation dans mon programme ?

220voto

Peter Lawrey Points 229686

Les boucles sont également très utiles à connaître, en particulier lorsque l'on utilise des tableaux,

int[] array = new int[10];
Random rand = new Random();
for (int i = 0; i < array.length; i++)
    array[i] = rand.nextInt(100) + 1;
Arrays.sort(array);
System.out.println(Arrays.toString(array));
// in reverse order
for (int i = array.length - 1; i >= 0; i--)
    System.out.print(array[i] + " ");
System.out.println();

46voto

isah Points 978

Il peut vous aider à comprendre les boucles en les mettant en œuvre vous-même. Voir Le tri à bulles est facile à comprendre :

public void bubbleSort(int[] array) {
    boolean swapped = true;
    int j = 0;
    int tmp;
    while (swapped) {
        swapped = false;
        j++;
        for (int i = 0; i < array.length - j; i++) {
            if (array[i] > array[i + 1]) {
                tmp = array[i];
                array[i] = array[i + 1];
                array[i + 1] = tmp;
                swapped = true;
            }
        }
    }
}

Bien entendu, vous ne devriez pas l'utiliser en production, car il existe des algorithmes plus performants pour les grandes listes, tels que QuickSort ou FusionnerTrier qui sont mis en œuvre par Arrays.sort(array)

0 votes

BubbleSort est certainement un bon algorithme pour les débutants, mais comme vous l'avez mentionné, QuickSort ou MergeSort sont bien plus performants pour les grands ensembles de données et ce sont les algorithmes utilisés par la méthode Arrays.sort(array) pour cette raison. Merci de l'avoir mentionné pour ceux qui ne l'auraient pas compris.

0 votes

J'ai mis un upvote à cette réponse car elle sera plus probablement recherchée par les débutants et les débutants devraient savoir comment implémenter une fonction de tri par eux-mêmes.

0 votes

Comme la question initiale porte sur le tri d'un tableau de 10 entiers, le tri à bulles est tout à fait acceptable. Production ou non s'il n'y a pas d'attente d'une entrée plus importante.

27voto

uzilan Points 522

Jetez un coup d'œil à Arrays.sort()

3 votes

Pourrais-je obtenir un exemple d'utilisation dans mon programme ?

23voto

stacker Points 34209

J'ai été paresseux et j'ai ajouté les boucles

import java.util.Arrays;

public class Sort {
    public static void main(String args[])
    {
        int [] array = new int[10];
        for ( int i = 0 ; i < array.length ; i++ ) {
            array[i] = ((int)(Math.random()*100+1));
        }
        Arrays.sort( array );
        for ( int i = 0 ; i < array.length ; i++ ) {
            System.out.println(array[i]);
        }
    }
}

Votre tableau a une longueur de 10. Vous avez besoin d'une variable ( i ) qui prend les valeurs de 0 à 9 .

for ( int i = 0  ; i < array.length ;   i++ ) 
       ^               ^                   ^
       |               |                   ------  increment ( i = i + 1 )
       |               |
       |               +-------------------------- repeat as long i < 10
       +------------------------------------------ start value of i

Arrays.sort( array );

est une méthode de bibliothèque qui permet de trier les tableaux.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X