Probleme avec le tri d une liste java
patrick
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
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
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Liste déroulante excel - Guide
- 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]