Tri d'une matrice

Messages postés
2
Date d'inscription
samedi 4 juin 2016
Dernière intervention
1 septembre 2016
- - Dernière réponse : KX
Messages postés
15870
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 décembre 2018
- 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 

Votre réponse

1 réponse

Messages postés
15870
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 décembre 2018
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.