Probleme avec le tri d une liste java

Fermé
patrick - 16 juin 2010 à 20:25
KX Messages postés 16760 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 - 13 oct. 2011 à 23:59
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.

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:

3 réponses

aucune reponse ?
0
KX Messages postés 16760 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
13 oct. 2011 à 23:59
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 :
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]
0
xoft-ob Messages postés 30 Date d'inscription vendredi 2 septembre 2011 Statut Membre Dernière intervention 9 juin 2012 4
13 oct. 2011 à 23:04
voici un tri trés simple en Java:
http://www.tech4um.com/Développement_Logiciel-Java-Programme_pour_le_Tri_d'insertion_En_Java-101.html
-1
KX Messages postés 16760 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
Modifié par KX le 13/10/2011 à 23:52
Le lien correct est Programme pour le Tri d'insertion En Java
Mais le code ne correspond pas vraiment à un tri par insertion...
0