Accueil > Forum > > > > Pb en java
Pb en java
vendredi 10 janvier 2003 à 07:01:08 |
Pb en java

rayy
|
Je n'arrive pas à trouver comment faire un tri rapide en java sur les avl dont les noeuds et les feuilles sont des vecteurs. Pouvez-vous m'aider ?
|
|
vendredi 10 janvier 2003 à 09:01:00 |
Re : Pb en java

JHelp
|
Si tu as un critétère qui te dit si un vecteur est avant un autre, alors implémente Comparable, définit la méthode : int compareTo(Object objet) avec ce critére. compareTo doit renvoyer : -> un entier négatif si l'instance est avant l'objet -> 0 si l'instance est égale à l'objet -> un entier positif si l'instance est aprés l'objet
Ensuite, tu peux utiliser un TreeSet(java.util), ou une autre classe du package java.util, ou faire ton tri toi même.
JHelp
|
|
vendredi 10 janvier 2003 à 09:04:03 |
Re : Pb en java

rayy
|
Merci de m'avoir répondu, mais c'est faire le tri moi-meme que j'arrive pas à faire! As-tu une solution pour moi stp ?
------------------------------- Réponse au message : -------------------------------
> Si tu as un critétère qui te dit si un vecteur est avant un autre, alors implémente Comparable, définit la méthode : > int compareTo(Object objet) > avec ce critére. > compareTo doit renvoyer : > -> un entier négatif si l'instance est avant l'objet > -> 0 si l'instance est égale à l'objet > -> un entier positif si l'instance est aprés l'objet > > Ensuite, tu peux utiliser un TreeSet(java.util), ou une autre classe du package java.util, ou faire ton tri toi même. > > JHelp
|
|
vendredi 10 janvier 2003 à 15:15:49 |
Re : Pb en java

JHelp
|
Bon, c'est plutôt un pb d'algo. Donc je suppose, que tu utilises le critére que je t'ai donné. C'est à dire une classe qui implémente compareTo. Je suppose également, quau départ tes éléments ne sont pas triés. Remarque, on peut également faire une liste qui trie au fur et à mesure, mais je ne crois pas que celà soit ton sujet. Donc pour le trie rapide, tu peux faire : public void tri(Comparable[] elements) { //Si le tableau est null,on a rien à faire if(elements==null) return; //On récupére la taille du tableau int taille=elements.length; //Si la taille est inférieur à 2, on a rien à faire if(taille<2) return; //On appel le tri rapide, on va trié tout le tableau triRapide(elements,0,taille-1); }
//On trie le tableau entre les indice depart et fin inclus private void triRapide(Comparable[] elements,int depart,int fin) { //On calcul l'écart d'indice int ecart=fin-depart; //Si on a un écart <2 , rien à faire if(ecart<2) return; //Si l'écart est de deux, on inverse si nécessaire) if(ecart==2) { //Si le premier élément est avant le secon, on a rien à faire if(elements[depart].compareTo(elements[fin])<=0) return; //On inverse les éléments Comparable element=elements[depart]; elements[depart]=elements[fin]; elements[fin]=element; return; } //On prend le premier élément comme pivot Comparable pivot=elements[depart]; //On permute les éléments que tous les éléments inférieurs au pivot soit avant lui, et les supérieurs aprés lui //rang ou se trouve le pivot int rang=depart; //indice de parcourt du tableau int indice=depart+1; //on va parcourir tous les éléments do { //Si l'élément courant est avant le pivot if(elements[indice].compareTo(pivot)<=0) { //On met l'élément courant à la place du pivot elements[rang]=elements[indice]; //Le pivot sera décalé d'un rang rang++; //On met l'élément se trouvant à la nouvelle place du pivot, à la place d'où se trouvait l'élément courant elements[indice]=elements[rang]; } //on passe à l'indice suivant indice++; }while(indice<=fin); //On place le pivot au rang calculer elements[rang]=pivot; //On tri la demi partie inférieure au pivot du tableau triRapide(elements,depart,rang-1); //On tri la demi partie supérieure au pivot du tableau triRapide(elements,rang+1,fin); }
|
J'éspére que ça t'aidera JHelp
|
|
vendredi 10 janvier 2003 à 17:20:58 |
Re : Pb en java

rayy
|
Ouai, mais avec les AVL comment tu fais? Il faut regarder dans les fils gauv=che et droit et tout non ? ------------------------------- Réponse au message : ------------------------------- > Bon, c'est plutôt un pb d'algo. > Donc je suppose, que tu utilises le critére que je t'ai donné. C'est à dire une classe qui implémente compareTo. > Je suppose également, quau départ tes éléments ne sont pas triés. > Remarque, on peut également faire une liste qui trie au fur et à mesure, mais je ne crois pas que celà soit ton sujet. > Donc pour le trie rapide, tu peux faire : > > > public void tri(Comparable[] elements) > { > //Si le tableau est null,on a rien à faire > if(elements==null) > return; > //On récupére la taille du tableau > int taille=elements.length; > //Si la taille est inférieur à 2, on a rien à faire > if(taille<2) > return; > //On appel le tri rapide, on va trié tout le tableau > triRapide(elements,0,taille-1); > } > > //On trie le tableau entre les indice depart et fin inclus > private void triRapide(Comparable[] elements,int depart,int fin) > { > //On calcul l'écart d'indice > int ecart=fin-depart; > //Si on a un écart <2 , rien à faire > if(ecart<2) > return; > //Si l'écart est de deux, on inverse si nécessaire) > if(ecart==2) > { > //Si le premier élément est avant le secon, on a rien à faire > if(elements[depart].compareTo(elements[fin])<=0) > return; > //On inverse les éléments > Comparable element=elements[depart]; > elements[depart]=elements[fin]; > elements[fin]=element; > return; > } > //On prend le premier élément comme pivot > Comparable pivot=elements[depart]; > //On permute les éléments que tous les éléments inférieurs au pivot soit avant lui, et les supérieurs aprés lui > //rang ou se trouve le pivot > int rang=depart; > //indice de parcourt du tableau > int indice=depart+1; > //on va parcourir tous les éléments > do > { > //Si l'élément courant est avant le pivot > if(elements[indice].compareTo(pivot)<=0) > { > //On met l'élément courant à la place du pivot > elements[rang]=elements[indice]; > //Le pivot sera décalé d'un rang > rang++; > //On met l'élément se trouvant à la nouvelle place du pivot, à la place d'où se trouvait l'élément courant > elements[indice]=elements[rang]; > } > //on passe à l'indice suivant > indice++; > }while(indice<=fin); > //On place le pivot au rang calculer > elements[rang]=pivot; > //On tri la demi partie inférieure au pivot du tableau > triRapide(elements,depart,rang-1); > //On tri la demi partie supérieure au pivot du tableau > triRapide(elements,rang+1,fin); > } > |
> > J'éspére que ça t'aidera > > JHelp
|
|
vendredi 10 janvier 2003 à 17:46:37 |
Re : Pb en java

JHelp
|
Que sont les AVL, des arbres bianaires ou des arbres à nombre de branches quelconques. Qu'entends-tu par trié des AVL ? As tu un AVL non trié au départ et tu dois en générer un trié ? Ou te suffit-il qu'il soit trié ou fur et à mesure ? S'il s'agit d'un arbre binaire trié au fur et à mesure à équilibre, regade dans les sources, tu trouveras une des miennes qui parle de ce sujet. JHelp
|
|
vendredi 10 janvier 2003 à 17:48:18 |
Re : Pb en java

rayy
|
Il est non trié, et il faut que je le trie
------------------------------- Réponse au message : -------------------------------
> Que sont les AVL, des arbres bianaires ou des arbres à nombre de branches quelconques. > Qu'entends-tu par trié des AVL ? > As tu un AVL non trié au départ et tu dois en générer un trié ? > Ou te suffit-il qu'il soit trié ou fur et à mesure ? > S'il s'agit d'un arbre binaire trié au fur et à mesure à équilibre, regade dans les sources, tu trouveras une des miennes qui parle de ce sujet. > JHelp
|
|
samedi 11 janvier 2003 à 16:27:34 |
Re : Pb en java

JHelp
|
Mettons que ton AVL, s'appel Arbre public void tri(Arbre arbre) { //Si l'arbre est null on a rien a trier if(arbre==null) return; //Si l'arbre est vide, ou est une feuille, on a rien à trier if(arbre.estVide()||arbre.estFeuille()) return; boolean b=false; do { b=false; tri(arbre.getFilsGauche()); tri(arbre.getFilsDroit()); if(arbre.getFilsGauche()!=null) if(arbre.getValeur().compareTo(arbre.getFilsGauche())<=0) { Object o=arbre.getValeur(); arbre.setValeur(arbre.getFilsGauche().getValeur()); arbre.setValeur(o); b=true; } if(arbre.getFilsDroit()!=null) if(arbre.getValeur().compareTo(arbre.getFilsDroit())>0) { Object o=arbre.getValeur(); arbre.setValeur(arbre.getFilsDroit().getValeur()); arbre.setValeur(o); b=true; } }while(b); }
|
JHelp
|
|
Cette discussion est classée dans : java, pb
Répondre à ce message
Sujets en rapport avec ce message
pb d'Applet [ par PlumE ]
Je ne connais pas grand chose en Java, mais voici mon probleme:Je voudrais creer un chat (en applet): j'ai fait des tests de connexion au serveur IRC
pb Serveur exception [ par projet2501 ]
Code source : import java.lang.*; import java.io.*; import java.net.*; public class Serveur { InetAddress addr; ServerSocket srv
Pb introduire une applet dans un code source [ par Alandar ]
Bonjour, Je voudrais pour effectuer quelque test, pouvoir executer une applet java par l'intermédiaire d'un executable java, ce lancant par un main.J'
HELP JAVA: pas dur pour les pro... [ par yaoh ]
je suis pas trop à l'aise pour l'instant en java.J'ai un pb de variables.J'ai créé deux applications pour deux cadres différents avec Jbuilder.J'appel
pb avec java [ par sih ]
j'ai un programme qui manipule des chiffres double et je veux les afficher dans un JTextField avec seulement deux chiffres aprés la virgule.Merci
pb de librairie [ par dmaillet ]
bonjour a tousvoila, j'ai un pb avec la librairie j3d sous linuxl'erreur est :java.lang.UnsatisfieldLinkError: no J3D in java.library.pathmerci pour v
pb initialization error... [ par dmaillet ]
je viens de changer d'ordinateur, et un programme que JBUILDER compile parfaitement sous l'ancien, me fait maintenant pour toute les classes :initiali
pb de capture Java 3d [ par sabadie ]
Salut J'ai un probleme de capture d'image en Java3d.Je fais mon rendu dans un offscreen buffer ainsi que dans un canvas 3D standard. Ma scene comprend
pb pour compiler avec l'invite de commandes [ par kobee12 ]
Salut!Je debute en java. J'utilise Visual J++. Ce que je voudrais, c'est pouvoir compiler avec l'invite de commande de windows. Seulement il ne reconn
PB de lancement chat de caramail [ par cjoffrey ]
Salut scusez moi je connais rein en programmation je créé des sites en html uniquement ...bref...J'essaie de lancer depuis longtemps le chat de carama
Livres en rapport
|
Derniers Blogs
PB LORS DE L'INSTALLATION SHAREPOINT 2010.PB LORS DE L'INSTALLATION SHAREPOINT 2010. par Patrick Guimonet
Lors de l'installation de SharePoint 2010, j'ai rencontré un problème de plantage à l'étape 5 du configuration Wizard. Ca se termine sur cet écran : Et en analysant le fichier de journalisation, on remarque vers la fin des 15000 et quelques lign...
Cliquez pour lire la suite de l'article par Patrick Guimonet [WF4] AJOUTER DES CONTRAINTES à UNE ACTIVITé (2/2)[WF4] AJOUTER DES CONTRAINTES à UNE ACTIVITé (2/2) par JeremyJeanson
Après mon précédent article qui attaque les contraintes par la fasse Nord de l'Everest. passons à la seconde possibilité offerte par WF4 pour valider une activité : la metadata . Je vous en ai déjà toucher un ou deux mots. La metadata dans WF4 est un élém...
Cliquez pour lire la suite de l'article par JeremyJeanson [WF4] AJOUTER DES CONTRAINTES à UNE ACTIVITé (1/2)[WF4] AJOUTER DES CONTRAINTES à UNE ACTIVITé (1/2) par JeremyJeanson
De WF3 à WF4 pas mal de choses on été changées pour faciliter la vie des développeurs, mais certain points peuvent sembler obscures. comme les contraintes. Pour vous guider, je me lance dans une série de deux articles. Ils présenterons deux approches poss...
Cliquez pour lire la suite de l'article par JeremyJeanson [ASP.NET] NE PAS SE FAIRE AVOIR PAR IHTTPMODULE ET SA MéTHODE INIT()[ASP.NET] NE PAS SE FAIRE AVOIR PAR IHTTPMODULE ET SA MéTHODE INIT() par tja
Beaucoup de développeurs pensent que lorsqu'on créé et enregistre un IHttpModule, il n'en existe qu'une seule instance et la méthode Init() sera appelée qu'une fois.
C'est faux
Cela peut vraiment créer des bugs subtils dont en ne se rend pas compte ...
Cliquez pour lire la suite de l'article par tja [MSTD10] SHAREPOINT 2010 ET TEAM FOUNDATION SERVER[MSTD10] SHAREPOINT 2010 ET TEAM FOUNDATION SERVER par phil
Un post rapide pour vous informer de la disponibilité de la vidéo de ma présentation sur SharePoint 2010 & Team Foundation Server. http://www.microsoft.com/france/vision/mstechdays10/Webcast.aspx?EID=20215d48-02e3-4d43-8c36-e53505c3b316 Dans la ...
Cliquez pour lire la suite de l'article par phil
Forum
RE : INTRFACE J2MERE : INTRFACE J2ME par manoula1112
Cliquez pour lire la suite par manoula1112
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
|