IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topicStart Poll

En ligne · [ Standard ] · Linéaire+

> Algo De Tri, appel aux codeurs

Sha
post 17/03/2005 15:30
Message #1


Cartographe
****

Groupe : Membres
Messages : 2,065
Inscrit le : 16/05/2002 23:00
Lieu : Toulouse
Membre no. 5



Gràce aux conseils de Gfx j'ai pu profiler mon appli java pour trouver quelles étaient les procédures qui la ralentissaient. (J'utilise Hyades sous Eclipse)

Il s'avère que l'un des plus importants bottelnecks (ralentissements) est provoqué par un aglo de tri, qui me sert à classer dans l'ordre décroissant des valeurs de type double, dont le nombre peut aller de quelques-unes à plusieurs milliers.

N'étant pas un vrai programmeur et ayant suivi les conseils que j'ai pu trouver, j'utilise pour l'instant un algo de "tri a bulles", réputé rapide. Alors peut-être que ma version de l'algo est sous-optimale et peut-être même que ce n'est pas le bon algo, si vous pouviez m'aider je vous en serais reconnaissant smile.gif

CODE
   private void triBulle(double[] valeurs) {
       int i;
       boolean permut = true;
       double tempVal = 0;
       int tempNdx = 0;

       for (i = 0; i < valeurs.length; i++) {
           posDec[i] = i;
       }
       while (permut == true) {
           permut = false;
           for (i = 0; i < (valeurs.length - 1); i++) {
               if (valeurs[i] < valeurs[i + 1]) {
                   tempVal = valeurs[i];
                   valeurs[i] = valeurs[i + 1];
                   valeurs[i + 1] = Math.abs(tempVal);
                   tempNdx = posDec[i];
                   posDec[i] = posDec[i + 1];
                   posDec[i + 1] = tempNdx;
                   permut = true;
               }
           }
       }
   }


Ce message a été modifié par Sha - 17/03/2005 17:19.


--------------------
"[I reject] politically-oriented thinking as essentially a hopeless waste of intellectual effort." - John Nash.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Dude76
post 17/03/2005 17:39
Message #2


Goule
****

Groupe : Membres
Messages : 977
Inscrit le : 17/12/2002 10:28
Lieu : La Remuée
Membre no. 149



[mode vieux souvenirs de licence]
tri bulle : complexité en N²
QuikSort : complexité en N² théorique, s'approche de N Log(N) dans la pratique.
Passer par des arbres binaire : complexité en N Log(N).
[/mode]


--------------------
Il y a 3 grands mensonges en informatique:
-Ca marche.
-C'est compatible.
-Ca sort bientôt.

user posted image
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Gfx
post 17/03/2005 21:19
Message #3


Goule
****

Groupe : Membres
Messages : 980
Inscrit le : 01/08/2002 23:00
Lieu : Lyon
Membre no. 106



Houlà Sha, fallait demander smile.gif Regarde donc la classe Arrays, elle est bourrée de méthodes sort() qui utilisent un quicksort modifié et donc les performances sont très bonnes. En plus ça c'est totalement inutile dans ton algo :
CODE

for (i = 0; i < valeurs.length; i++) {
 posDec[i] = i;
}

De manière générale je le trouve bizarre le code de ton tri à bulle.


--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Sha
post 17/03/2005 21:25
Message #4


Cartographe
****

Groupe : Membres
Messages : 2,065
Inscrit le : 16/05/2002 23:00
Lieu : Toulouse
Membre no. 5



Ben oui mais si je demandais pour tout, comme y'en a des milliers de lignes biggrin.gif
En tout cas merci encore smile.gif


--------------------
"[I reject] politically-oriented thinking as essentially a hopeless waste of intellectual effort." - John Nash.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
PoP
post 18/03/2005 8:49
Message #5


ragondin interstellaire
*****

Groupe : Membres
Messages : 3,059
Inscrit le : 16/05/2002 23:00
Lieu : DTC, au fond à gauche
Membre no. 8



Fait gaffe Sha, c'est un coup à finir sur DailyWTF! tongue.gif
Rah merde, ça me fait penser que j'ai un dewoir sur les algos de tri en ADA à faire pour la fin du mois...fack!


--------------------
PoP
"Consommez malin, consommez du ragondin!"
user posted image
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Sha
post 18/03/2005 9:05
Message #6


Cartographe
****

Groupe : Membres
Messages : 2,065
Inscrit le : 16/05/2002 23:00
Lieu : Toulouse
Membre no. 5



Désolé mais j'ai bien besoin de la premièe boucle qi remplit le tableau posDec, mais peut-être est-ce parce que je n'utilise pas d'Array.sort. J'ai besoin de classer des indices, en plus de classer des valeurs. L'objectif est d'avoir un tableau qui contienne l'ordre décroissant d'un autre tableau, en fait.

Mais bon, j'ai résolu mon problème, car ce tri était appelé pour chaque itération de la boucle qui dessine les polygones de mon fond de carte... Au lieu d'une fois préalablement ! Je suis content, mon appli tourne bien plus rapidement biggrin.gif

Encore une démonstration de la niaiserie de ma méthode de travail en programmation : j'imagine vaguement dans ma tête (jamais sur un schéma propre) l'organisation des classes et des appels, je code en vrac, je regarde si ça marche rolleyes.gif

Si cela vous intrigue, voilà le bestiau :

http://www.univ-tlse2.fr/geoprdc/scap/java/

Ce message a été modifié par Sha - 18/03/2005 9:47.


--------------------
"[I reject] politically-oriented thinking as essentially a hopeless waste of intellectual effort." - John Nash.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
PoP
post 18/03/2005 12:04
Message #7


ragondin interstellaire
*****

Groupe : Membres
Messages : 3,059
Inscrit le : 16/05/2002 23:00
Lieu : DTC, au fond à gauche
Membre no. 8



/mode clubic on
pfff, c'est nul, y'a qu'une carte...quelle appli de merde...

biggrin.gif
Ca ne requière pas 1.5 si?

Ce message a été modifié par PoP - 18/03/2005 12:05.


--------------------
PoP
"Consommez malin, consommez du ragondin!"
user posted image
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Gfx
post 18/03/2005 12:30
Message #8


Goule
****

Groupe : Membres
Messages : 980
Inscrit le : 01/08/2002 23:00
Lieu : Lyon
Membre no. 106



Utilise quand même Ararys.sort() smile.gif Et puis pour avoir l'ordre décroissant... il suffit de parcourir le tableau en sens inverse puisqu'il est trié smile.gif

Ce message a été modifié par Gfx - 18/03/2005 12:33.


--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Sha
post 18/03/2005 20:10
Message #9


Cartographe
****

Groupe : Membres
Messages : 2,065
Inscrit le : 16/05/2002 23:00
Lieu : Toulouse
Membre no. 5



Pop> j'en sais trop rien, normalement ça doit tourner avec le 1.4, mais j'ai fat le build avec le sdk 1.5.1 sur la machine.

Gfx> oui dès que j'ai un peu de temps pour reprndre ce code un peu plus sérieursment j'essaie. Le problème c'est la motivation, un mois de boulôt et personne que ça intéresse ou presque.


--------------------
"[I reject] politically-oriented thinking as essentially a hopeless waste of intellectual effort." - John Nash.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Gfx
post 18/03/2005 21:45
Message #10


Goule
****

Groupe : Membres
Messages : 980
Inscrit le : 01/08/2002 23:00
Lieu : Lyon
Membre no. 106



Un build sur un JDK 1.5 ne tournera pas sur un JDK 1.4 si tu n'as pas ajouté les flags -source 1.4 et -target 1.4 au compilateur.


--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
PoP
post 20/03/2005 19:35
Message #11


ragondin interstellaire
*****

Groupe : Membres
Messages : 3,059
Inscrit le : 16/05/2002 23:00
Lieu : DTC, au fond à gauche
Membre no. 8



Ah bah ils doivent y être alors, ça tourne sous 1.4.2


--------------------
PoP
"Consommez malin, consommez du ragondin!"
user posted image
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Reply to this topicTopic OptionsStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :
 

Version bas débit Nous sommes le : : 03/07/2025 1:02