Améliorer le temps d'1 fonction de tri [JAVA]

Fermé
romain_natiez Messages postés 179 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 22 février 2006 - 13 janv. 2005 à 15:30
 Joshua - 13 janv. 2005 à 17:51
Bonjour à tous,
Je suis actuellement entrain de travailler sur une fonction de tri en java déjà existante, le java n'étant pas ma spécialité, j'ai quand même réussi à transformer une fonction de tri par ordre alphabétique en fonction de tri par numéro(vive le net et la doc!)

Mais comme cette fonction traite plusieurs milliers d'enregistrements et que cela prend au moins 5 à 8 minutes, j'aurai voulu savoir s'il était possible d'améliorer cette fonction que voici :

for (int y = 0;y<adocs.length;y++) {
for (int x = 0;x<adocs.length-y-1;x++) {
Document temp1 = (Document) adocs[x];
Document temp2 = (Document) adocs[x+1];
String temp3 = temp1.getItemValueString("Requete");
a = temp3.lastIndexOf("-")+1;
b = temp3.length();
temp3 = temp3.substring(a,b);
Integer temp5 = new Integer(temp3);
int temp7 = temp5.intValue(); String temp4 = temp2.getItemValueString("Requete");
a = temp4.lastIndexOf("-")+1;
b = temp4.length();
temp4 = temp4.substring(a,b);
Integer temp6 = new Integer(temp4);
int temp8 = temp6.intValue();
if (temp8 < temp7)
{adocs[x] = temp2;
adocs[x+1] = temp1;
}
}
}

J'avais déjà fait une fonction de tri en VB il y a bien longtemps et qui était optimisée pour prendre le moins de temps possible mais pas moyen de me rappeler le truc :-(

Si quelqun à la solution je lui en serait très reconnaissant !

Merci d'avance à vous tous !!
A voir également:

3 réponses

teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
13 janv. 2005 à 15:37
Salut,
En fait ça dépend pas mal de ce que tu cherches à trier, si c'est déjà plus ou moins ordonné ou non par exemple.
Il existe difféerentes méthode, apparement tu utilises le "tri bulle" si j'ai bien compris (faire remonter la première valeur en tête et ainsi de suite), il existe également le tri fusion qui donne de meilleure résultat (tu coupes le tableaux en deux parties que tu tries en coupant en deux parties...quand tu as un élément ton tableau et ordonné et après tu "merges" tes deux tableaux.

Qui va en mer pour son plaisir,
irait en enfer pour ses vacances
0
romain_natiez Messages postés 179 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 22 février 2006 31
13 janv. 2005 à 15:42
Je vais regarder le temps que prend mon programme avec et sans la fonction de tri c'est peut être un problème de serveur surchargé...

Merci à tous
0
déja, sans regarder l'algo je dirais que ton code est très lourd ! je m'explique : évite de créer et de détruire tes objets à chaque boucle mais essaye de réutiliser tes objets !

ex :
Document temp1 = null;
for (int y = 0;y<adocs.length;y++) {
for (int x = 0;x<adocs.length-y-1;x++) {
temp1 = (Document) adocs[x];


comme ça, la machine virtuelle ne va pas supprimer et réallouer un nouvel objet à chaque fois.
0