Tri d'une matrice

haaaneen Messages postés 2 Date d'inscription samedi 4 juin 2016 Statut Membre Dernière intervention 1 septembre 2016 - 1 sept. 2016 à 15:52
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 1 sept. 2016 à 18:21
Bonjour,

y-a-t il un moyen de trier une matrice de manière décroissante suivant la dernière ligne et la réécrire :
je prends cet exemple:
w =
1 2 5
8 1 9
9 3 14
en triant la 3ème ligne j'aimerais bien obtenir ceci:
w =
5 1 2
9 8 1
14 9 3
merci de m'aider

1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 127
1 sept. 2016 à 18:21
Bonjour,

En spécifiant le Comparator adéquat à la méthode Arrays.sort on peut s'en sortir assez facilement.

public static void display(int[][] matrix) {
    int dim = matrix.length;
    for (int j = 0; j < dim; j++) {
        for (int i = 0; i < dim; i++) {
            if (i != 0) {
                System.out.print("\t");
            }
            System.out.print(matrix[i][j]);
        }
        System.out.println();
    }
}

public static void main(String[] args) {
    int[][] matrix = { { 1, 8, 9 }, { 2, 1, 3 }, { 5, 9, 14 } };
    display(matrix);
    java.util.Arrays.sort(matrix, (c1, c2) ->
        Integer.compare(c2[c2.length - 1], c1[c1.length - 1]));
    display(matrix);
}

Ce qui donne bien :
1	2	5
8 1 9
9 3 14

5 1 2
9 8 1
14 9 3
0
Rejoignez-nous