public void lancerAlgo(Similarite s) {

		this.similarite = s;
		
		System.out.println("Lancement de l'algorithme avec la similitude suivante : " + this.similarite.getClass().getSimpleName());
		
		boolean stable=false;
		int compteur=0;
		
		while (!stable && compteur<100) {
			// Supprime tous les items des groupes pour recommencer une passe
			for (Groupe groupe : listeGroupes) {
				groupe.clearAllItems();
			}
			
			// Pour chaque item
			for (int i = 0; i<donnees.size(); i++) {
				
				List<Float> item = donnees.get(i);
								
				// Initialisation arbitraire
				Groupe groupePlusProche = listeGroupes.get(0);
				float distanceMini = this.similarite.distance(item, listeGroupes.get(0).getCentre());
				
				// Pour chaque centre de groupe
				for (Groupe groupe : listeGroupes) {

					// Calcul de la distance de l'item au centre
					float d = this.similarite.distance(item, groupe.getCentre());
				
					if (d < distanceMini) {
						distanceMini = d;
						groupePlusProche = groupe;
					}

				}

				groupePlusProche.addItem(i);

			}

			stable=true;
			for (Groupe groupe : listeGroupes) {
				// Calcul des nouveaux centres d'inertie
				List<Float> centre = this.calculInertie(groupe.getItems());
				stable&=this.egaliteDesCentres(groupe.getCentre(), centre);
				groupe.setCentre(centre);
			}
			compteur++;
		}

		
		System.out.println("L'algorithme a fait "+compteur+" passes.");
		
		// Affichage
		if (this.affichage == "graphic") {
			// Affichage graphique
			FenetreGraphique fenetreAffichage = new FenetreGraphique(this.similarite.getClass().getSimpleName());
			fenetreAffichage.affiche(listeGroupes, donnees);
		} else {
			System.out.println(this);
		}

	}