Probleme avec le tri d une liste java
patrick
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonsoir,
jai un probleme avec le tri insertion d une liste en java !!
jai cette liste :
Student s1 = new Student("patrick" , "b" , 444426160);
Student s2 = new Student("Andre" , "b" , 2426161);
Student s3 = new Student("Celine" , "a" , 3426162);
List<Student> l = new LinkedList<Student>();
l.add(s1);
l.add(s2);
l.add(s3);
voila le probleme :
on me demande de creer une classe qui contient l algorithme , de tri insertion , afin qu on puisse trier une liste d etudiant.
l algorithme commence par creer une nouvelle liste , puis on effectue les etapes necessaires pour trier l autre liste.
je n ai absolument aucune idee , comment implementer cet algorithme "tri insertion "
, c est la premier fois que jai a faire avec des listes .
quelq'un peut m aider svp ?
j ai construit la classe " Student " : qui contient le nom , le prenom et le numero d un etudiant.
ensuite la classe CompareByNumber qui implemente l interface Comparator :
el la , la classe CompareByLastname qui implemente elle aussi l interface Comparator<Student>
jai un probleme avec le tri insertion d une liste en java !!
jai cette liste :
Student s1 = new Student("patrick" , "b" , 444426160);
Student s2 = new Student("Andre" , "b" , 2426161);
Student s3 = new Student("Celine" , "a" , 3426162);
List<Student> l = new LinkedList<Student>();
l.add(s1);
l.add(s2);
l.add(s3);
voila le probleme :
on me demande de creer une classe qui contient l algorithme , de tri insertion , afin qu on puisse trier une liste d etudiant.
l algorithme commence par creer une nouvelle liste , puis on effectue les etapes necessaires pour trier l autre liste.
je n ai absolument aucune idee , comment implementer cet algorithme "tri insertion "
, c est la premier fois que jai a faire avec des listes .
quelq'un peut m aider svp ?
j ai construit la classe " Student " : qui contient le nom , le prenom et le numero d un etudiant.
public final class Student { String lastname = null; String name = null; int studentNumber; Student (String name, String lastname, int studentNumber ) { this.lastname = lastname; this.name = name; this.studentNumber = studentNumber; } public String toString() { String str = null; str = "" + Integer.toString(studentNumber); str = name +" "+ lastname +" "+ str; return str; } }
ensuite la classe CompareByNumber qui implemente l interface Comparator :
import java.util.Comparator; public class CompareByNumber implements Comparator<Student> { public int compare(Student s1, Student s2) { int result = 0; Student stu1 = (Student) s1; Student stu2 = (Student) s2; if (stu1.studentNumber > stu2.studentNumber) { result = 1; return result; } else if (stu1.studentNumber < stu2.studentNumber) { result = -1; return result; } else { return 0; } } }
el la , la classe CompareByLastname qui implemente elle aussi l interface Comparator<Student>
import java.util.Comparator; public class CompareByLastname implements Comparator<Student> { public int compare(Student s1, Student s2) { Student stu1 = (Student) s1; Student stu2 = (Student) s2; int result = stu1.lastname.compareTo(stu2.lastname); if (result == 0) { result = stu1.name.compareTo(stu2.name); } return result; } }
A voir également:
- Probleme avec le tri d une liste java
- Liste déroulante excel - Guide
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Comment faire un tri personnalisé sur excel - Guide
- Eclipse java - Télécharger - Langages
3 réponses
Le principe de base du tri par insertion est :
Tu pars avec une liste à trier A, et une liste vide B.
À chaque itération tu vas prendre un élément de A et l'ajouter à B au bon endroit.
C'est à dire que tu vas devoir parcourir B tant que tu trouves des valeurs plus petites que celle que tu veux insérer.
Tu auras donc besoin d'un listIterator sur B, et de la méthode add
Exemple :
Tu pars avec une liste à trier A, et une liste vide B.
À chaque itération tu vas prendre un élément de A et l'ajouter à B au bon endroit.
C'est à dire que tu vas devoir parcourir B tant que tu trouves des valeurs plus petites que celle que tu veux insérer.
Tu auras donc besoin d'un listIterator sur B, et de la méthode add
Exemple :
A = [9,1,4,3] B = [] A = [1,4,3] B = [9] A = [4,3] B = [1,9] A = [3] B = [1,4,9] A = [] B = [1,3,4,9]