begin process at 2010 03 12 19:10:01
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Java

 > 

Archives

 > 

Au secours

 > 

Pb en java


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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


Nos sponsors


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,515 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales