Rechercher : dans
Par :

Tri d un vector en java

Dernière réponse le 6 fév 2009 à 10:48:43 fredo, le 15 fév 2008 à 11:57:48 
 Signaler ce message aux modérateurs

Bonjour,

J 'un un vector avec plusieurs élements et je souhaiterais effectuer un tri croissant sur le 3 element il s 'agit d une chaine de caracteres .
Je sais qu 'il existe une fonction genre : collection.sort ... mais je n 'arrive pas à l 'utiliser .

Voici mon code :
// je declare mon vector
public Vector v_tableau = new vector();
// j 'appelle une methode pour alimenter mon vector qui est de type vector
v_tableau = GetListeCP()
// et puis c 'est maintenant que je souhaite faire un tri du vector sur le 3 element mais je n y arrive pas
//c un truc comme ça :
collection.sort
.....


Savez vous comment doit on proceder
Merci de vos réponses

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « tri d un vector en java » dans :
Installer Java sous Ubuntu VoirPar défaut, Firefox n'est pas fourni avec Java. Voici comment procéder pour l'installer: Ouvrez un terminal (Menu Applications > Accessoires > Terminal) et tapez: sudo aptitude install sun-java6-jre sun-java6-plugin ou sudo aptitude install ...
[Firefox] plugin Java Jre de Sun VoirA) Les différentes variantes Java chez Sun B) Installation sous Mandriva Limited Edition 2005 ETAPE 1 ETAPE 2: Création du lien symbolique C) Installation sous debian lenny D) Installation sous ubuntu hardy heron A) Les différentes...
Tri à bulles -récursivité- VoirVoici une procédure récursive qui permet de trier un tableau de n entiers en utilisant la méthode de tri à bulles : Procedure Tri_bulles (var t : TAB; n : integer); Var i, aux : integer; Function Trier (t : TAB; n : integer) : Boolean; ...
Télécharger Java Runtime Environment VoirJava Runtime Environment (JRE) installe la machine virtuelle Java, permettant de jouer en ligne, de discuter avec des personnes dans le monde entier, de calculer les intérêts de votre prêt immobilier ou de visualiser des images en 3D. Ces...
Java - Premier programme VoirPremière application avec Java La première chose à faire est de créer un simple fichier texte (sans mise en forme) et de taper les quelques lignes suivantes : // Votre premiere application en Java class FirstApp { public static void main...
Java - Les types de données VoirLes primitives Java est un langage orienté objet, c'est-à-dire que les éléments manipulés sont des classes, ou plus exactement des objets, c'est-à-dire des instances de classes. Toutefois ces objets contiennent des données possèdant un type (et...
J2EE - Java 2 Enterprise Edition VoirIntroduction au Java Framework Le «Java Framework» (Java 2 Platform) est composé de trois éditions, destinées à des usages différents : J2ME : Java 2 Micro Edition est prévu pour le développement d'applications embarquées, notamment sur des...

1

yoann_tux, le 15 fév 2008 à 12:06:07

Bon un petit tri vite fait

int i = 0;
vecteur tmp;
while (i< length)
{
//listevect -> tableau de vecteurs
//listevect[i] -> vecteur à l'indice i du tableau de vecteur listevect
//listevect[i][2] -> 3eme cordonnées du vecteur à l'indice i.....

//tu peux remplacer listevect[i][2] par une fonction genre listevect[i].getz(); qui te renverrais ta 3 eme coordonnées.


if(listevect[i][2] > listevect[i+1][2]){
tmp = listevect[i][2];
listevect[i][2] = listevect[i+1][2];
listevect[i+1][2] = tmp;
i = i - 1;
}
i++;
}


en gros je fait donc un bubble sort (tri à bulles)


Il  y a 10 types de personnes sur terre, ceux qui lisent le 
binaire et les autres! Linux ? il y a pire mais c plus chère

Répondre à yoann_tux

2

fredo, le 15 fév 2008 à 14:14:30

Merci pour ta réponse mais je ne pense pas que je puisse l 'adapter en java .
En fait je veux sur une liste d 'un vecteur pouvoir trier un champ de caracteres par ordre croissant .
La seule méthode qui semble pouvoir le faire est la méthode collection.sort mais je n 'arrive pas à la mettre en place .

Répondre à fredo

7

 reponse, le 6 fév 2009 à 10:48:43

Void Tri(){




for (i=0; i<tab.length-1; i++){

double max;


//rechercher du max et sa position

max=tab[i];

int i0=i;

int j;

for (j=i+1; j<tab.length; j++){
if (tab[j] > max){

i0=j;
max=tab[j]; }
}

/**************************************/


/*************Permutation*************/
double f;

f=tab[i];
tab[i]=max;
tab[i0]=f; }


}

Répondre à reponse

3

fiddy, le 15 fév 2008 à 14:31:41

De mémoire, il me semble que Collections.sort est statique. Donc je dirais : Collections.sort(tonTableau);
import java.util.Collections; //ou quelque chose du genre

En espérant que ça marchera.
Google is your friend

Répondre à fiddy

4

yoann_tux, le 16 fév 2008 à 10:29:54

C'est psa clair ce que tu veux faire...
tu peux mettre un exemple ?
Il  y a 10 types de personnes sur terre, ceux qui lisent le ­
binaire et les autres! Linux ? il y a pire mais c plus chère­

Répondre à yoann_tux

5

fiddy, le 16 fév 2008 à 13:48:05

Salut,
Pas clair ?
Ben, tu as ton tableau que tu souhaites trier qu'on va appeler tonTableau.

import java.util.Collections;
Collections.sort(tonTableau);

Je vois pas comment être plus clair.

Cordialement
Google is your friend

Répondre à fiddy

6

pb.barthe, le 17 fév 2008 à 00:17:32
  • +1

Salut,

Bon, je t'ai fait un petit programme tuto :

import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.Vector;

public class SortableVectorOfString extends Vector implements Comparator{

	/*
	 * Numéro du caractère sur lequel on va trier
	 * (Attention, les indices commencent à 0)
	 */
	int numChar = 0;
	
	/*
	 * fonction de tri
	 */
	private void sortStringVector(int numChar){
		/*
		 * On précise le numéro du caractère à partir duquel doit se faire
		 * le tri
		 */ 
		this.numChar = numChar;
		/*
		 * Le 1er paramètre est le Vecteur à trier (moi-même)
		 * Le 2ème paramètre est le Comparator à utiliser pour cela...
		 * ... et c'est encore moi-même car j'implémente Comparator (ce
		 * qui m'oblige à remplir le contrat de Comparator qui stipule 
		 * que je dois fournir une méthode 'compare') 
		 */
		Collections.sort(this, this);
	}

	/* 
	 * Fonction de comparaison
	 * @param arg0 1er String à comparer
	 * @param arg1 2ème String à comparer
	 * @see java.util.Comparator#compare()
	 */
	public int compare(Object arg0, Object arg1) {
		String s0 = (String)arg0;
		String s1 = (String)arg1;
		/*
		 * Le plus pénible est de prendre en compte les cas où une des chaînes
		 * n'a pas la longueur minimum requise pour le tri à partir du n-ième
		 * caractère...
		 */
		if (s0.length() <= numChar) {
			// Si le 1er String n'a pas la longueur minimum requise
			if (s1.length() <= numChar) {
				// ... ni le 2ème : on dit qu'elles sont égales
				return 0;
			} else {
				// ... si le 2ème est à la maille : 
				//     on dit que le 1er est plus petite
				return -1;
			}
		} else {
			// Si le 1er String est assez grand
			if (s1.length() <= numChar) {
				// ... mais pas le 2ème : on dit que le 1er est plus grand
				return 1;
			} else {
				// Mais une fois ces cas traités, String fournit ce qu'il faut
				return s0.substring(numChar).compareTo(s1.substring(numChar));
			}
		}
	}

	/*
	 * Simple méthode d'affichage pour le test
	 */
	public void display(){
		System.out.println("===============================");
		System.out.println("Tri sur le car. " + numChar + ":");
		for (Iterator iterator = iterator(); iterator.hasNext();) {
			System.out.println(iterator.next());
		}
	}
	
	
	public static void main(String[] args) {
		// On crée l'objet
		SortableVectorOfString svs = new SortableVectorOfString();
		// On l'alimente un peu
		svs.add("QsDfghjklm");
		svs.add("AzErtyu");
		svs.add("WxCvbn");
		// 1er tri sur les chaînes complètes
		svs.sortStringVector(0);
		svs.display();
		// 2ème tri ne distingue pas "AzErtyu" de "WxCvbn"
		svs.sortStringVector(8);
		svs.display();
		// 3ème tri sur le 3ème car.
		svs.sortStringVector(2);
		svs.display();
		// 4ème tri ne distingue toujours pas "AzErtyu" de "WxCvbn"
		svs.sortStringVector(8);
		svs.display();
	}

	
}


Ca devrait afficher :
===============================
Tri sur le car. 0:
AzErtyu
QsDfghjklm
WxCvbn
===============================
Tri sur le car. 8:
AzErtyu
WxCvbn
QsDfghjklm
===============================
Tri sur le car. 2:
WxCvbn
QsDfghjklm
AzErtyu
===============================
Tri sur le car. 8:
WxCvbn
AzErtyu
QsDfghjklm


Bon courage pour la suite.

Note: indique quelle version de java tu utilise la prochaine fois ;-)

Répondre à pb.barthe