Tri décroissant d'un vector

Résolu/Fermé
sihem hcine Messages postés 113 Date d'inscription mercredi 5 mars 2014 Statut Membre Dernière intervention 7 février 2016 - 24 avril 2015 à 21:11
sihem hcine Messages postés 113 Date d'inscription mercredi 5 mars 2014 Statut Membre Dernière intervention 7 février 2016 - 25 avril 2015 à 16:22
bonsoir ,
Quelqu'un SVP m'aider mon but est de trier un vector des objets décroissant
Je procede comme suit : Collections.reverse(File_Prêt);mais ça ne marche pas
(file pret est un vector des objets processus , u processus ayant comme attributs nom , note (integer) . Je veux trier ce vector par ordre decroissant des notes quelqu'un m'aide SVP

2 réponses

Odenelle Messages postés 102 Date d'inscription samedi 19 novembre 2011 Statut Membre Dernière intervention 18 mars 2016 20
25 avril 2015 à 00:36
Salut,

Collections.reverse(File_Prêt.note)


Si ça ne marche pas alors je te conseille de faire un bon tri à l'ancienne avec les indices de tes objets (si tu veux opti, je te conseille le Quicksort il est puissant et assez facile à utiliser)
0
sihem hcine Messages postés 113 Date d'inscription mercredi 5 mars 2014 Statut Membre Dernière intervention 7 février 2016
25 avril 2015 à 08:58
ça ne marche pas puisque la note est un attribut d'objet de type processus.. comment on utilise le quicksort ,pourriez vous m'expliquer le principe SVP
0
Odenelle Messages postés 102 Date d'inscription samedi 19 novembre 2011 Statut Membre Dernière intervention 18 mars 2016 20
25 avril 2015 à 11:01
ah désolé, je ne connais pas les objets processus.
Voila une page expliquant très bien le principe du quicksort :
http://openclassrooms.com/courses/le-tri-rapide-qsort

J'ai oublié de te préciser mais si ton tableau est déjà plus où moins trié mieux vaut choisir un autre tri (par insertion par ex)
0
sihem hcine Messages postés 113 Date d'inscription mercredi 5 mars 2014 Statut Membre Dernière intervention 7 février 2016
25 avril 2015 à 16:19
okk merciii beaucouup ^^
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
Modifié par KX le 25/04/2015 à 16:54
Bonjour,

Collections.reverse
prends une liste et renvoie une liste où les éléments sont pris en sens inverse (le premier en dernier etc.)
Cela n'est donc utile pour faire un tri décroissant que si la liste est déjà triée dans l'ordre croissant, avec
Collections.sort
par exemple.

Deux cas de figure :

1) La classe Processus implémente l'interface Comparable<Processus> et définit la méthode
compareTo(Processus)
de sorte à comparer les notes des processus.
Dans ce cas tu peux faire un Collections.sort(filePret); pour les trier dans l'ordre croissant puis un Collections.reverse(filePret); pour obtenir l'ordre décroissant.

2) La classe Processus n'implémente pas l'interface Comparable<Processus> ou définit une méthode compareTo(Processus) qui ne compare pas avec les notes des processus.
Dans ce cas il faut construire un objet Comparator<Processus> dont la méthode
compare(Processus,Processus)
permet d'ordonner deux objets Processus par note décroissante. Il suffit ensuite d'appeler Collections.sort(filePret, comparator); pour trier les valeurs dans cet ordre.

Voici un exemple dans le deuxième cas.

En Java 5,6,7 :

Comparator<Processus> comparator = new Comparator<Processus>() {
    @Override
    public int compare(Processus p1, Processus p2) {
        return p2.getNote() - p1.getNote();
    }
};

List<Processus> list = Collections.sort(filePret, comparator);

En Java 8, on peut remplacer le Comparator par une expression lambda :

List<Processus> list = Collections.sort(filePret,
    (p1,p2) ->  p2.getNote() - p1.getNote());

La confiance n'exclut pas le contrôle
0
sihem hcine Messages postés 113 Date d'inscription mercredi 5 mars 2014 Statut Membre Dernière intervention 7 février 2016
25 avril 2015 à 16:22
mercii beaucoup mon problème a été resolu , j'utilise la 2 eme méthode
0