Tri d'une matrice

Messages postés
2
Date d'inscription
samedi 4 juin 2016
Statut
Membre
Dernière intervention
1 septembre 2016
- - Dernière réponse : KX
Messages postés
16039
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 octobre 2019
- 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
Afficher la suite 

1 réponse

Messages postés
16039
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 octobre 2019
88
0
Merci
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
Commenter la réponse de KX