C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

tri par tas - HELP

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Grand's
Guest





PostPosted: Mon Nov 15, 2004 9:24 am    Post subject: tri par tas - HELP Reply with quote



voila j'ai le code ci-dessous qui provient d'un bouquin et qui realise
le tri par tas

Code:
/*Fonction de selection de l'indice le plus grand d'un tableau.
Arguments:
- le tableau a trier
- la valeur a inserer
- les limites du tableau
*/
template <typename Type>
void insere_dans_tas(Type* t, Type x, int a, int b)
{
for(int m = 2*a; m <= b; m = 2*a) //boucle examinant le sous-arbre
de t[a]
{
if (m < b) // a a deux fils
if (t[m] < t[m+1]) m++; // on prend le fils le + grand

if (x >= t[m]) //si la valeur a inserer est +
grande
break; //on quitte la boucle
else
{
t[a] = t[m]; //sinon la racine devient t[m]
a = m;
}
}
t[a] = x; //on insere x
}



/*Fonction de creation du tas.
Arguments:
- le tableau a trier
- indice du dernier element du tableau
*/
template <typename Type>
void construis_tas(Type* t, int dernier)
{
for (int i = dernier/2; i >= 1; i--) //boucle de parcours du
tableau a partir du premier
//noeud a considerer
insere_dans_tas(t,t[i],i,dernier); //on insere le noeud dans le
tas
}



/*Fonction de tri par tas.
Arguments:
- le tableau a trier
- indice du dernier element du tableau
*/
template <typename Type>
void tri_par_tas(Type* t, int dernier)
{
construis_tas(t,dernier); //on construis le tas
for (int i = dernier; i >= 1; i--) //boucle de parcours du tableau
{
Type x = t[i]; //on sauve la derniere valeur du
tableau
t[i] = t[1]; //l'element est trie
insere_dans_tas(t,x,1,i-1); //on insere x dans le tas
}
}


il y avait un bel algo fourni avec et jusque la pas de probleme
Sauf qu'un tableau demarre a l'indice 0, et que cette indice n'est pas
pris en compte par cette fonction
Est-ce que jusque la j'ai raison ???
ne dois-je pas lire une premiere fois le tableau avant le tri pour
remonter la valeur la + grande sur la racine de l'arbre ???

merci de votre aide

--
Ceci est une signature automatique de MesNews.
Site : http://arnaud.mesnews.free.fr/

Back to top
Fabien LE LEZ
Guest





PostPosted: Mon Nov 15, 2004 9:28 am    Post subject: Re: tri par tas - HELP Reply with quote



On Mon, 15 Nov 2004 10:24:09 +0100, Grand's <ici (AT) oula (DOT) bas>:

Quote:
Est-ce que jusque la j'ai raison

???

C'est quoi comme trigraphe, ça ?



--
;-)

Back to top
Jean-Marc Bourguet
Guest





PostPosted: Mon Nov 15, 2004 9:37 am    Post subject: Re: tri par tas - HELP Reply with quote



Fabien LE LEZ <gramster (AT) gramster (DOT) com> writes:

Quote:
On Mon, 15 Nov 2004 10:24:09 +0100, Grand's <ici (AT) oula (DOT) bas>:

Est-ce que jusque la j'ai raison

???

C'est quoi comme trigraphe, ça ?

Un point d'interrogation.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Back to top
Fabien LE LEZ
Guest





PostPosted: Mon Nov 15, 2004 10:30 am    Post subject: Re: tri par tas - HELP Reply with quote

On 15 Nov 2004 10:37:32 +0100, Jean-Marc Bourguet <jm (AT) bourguet (DOT) org>:

Quote:
C'est quoi comme trigraphe, ça ?

Un point d'interrogation.

Au fait, quelle est l'utilité d'avoir un trigraphe pour un caractère
accessible sur n'importe quel clavier ?


--
;-)

Back to top
Jean-Marc Bourguet
Guest





PostPosted: Mon Nov 15, 2004 10:38 am    Post subject: Re: tri par tas - HELP Reply with quote

Fabien LE LEZ <gramster (AT) gramster (DOT) com> writes:

Quote:
On 15 Nov 2004 10:37:32 +0100, Jean-Marc Bourguet <jm (AT) bourguet (DOT) org>:

C'est quoi comme trigraphe, ça ?

Un point d'interrogation.

Au fait, quelle est l'utilité d'avoir un trigraphe pour un caractère
accessible sur n'importe quel clavier ?

Pris d'un doute, je verifie et ce n'est pas un trigraphe.

L'utilite aurait ete de pouvoir ecrire des points d'interrogations
sans devoir se demander s'ils etaient dans un trigraphe ou non. Mais
le seul contexte ou ca pose un probleme (a part le ?? a la fin d'un
commentaire cher a Sutter) c'est dans des chaines et la il y a
d'autres moyens (la concatenation etant vraissemblablement le prefere)

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Back to top
Jean-Marc Bourguet
Guest





PostPosted: Mon Nov 15, 2004 1:12 pm    Post subject: Re: tri par tas - HELP Reply with quote

Grand's <ici (AT) oula (DOT) bas> writes:

Quote:
il y avait un bel algo fourni avec et jusque la pas de probleme
Sauf qu'un tableau demarre a l'indice 0, et que cette indice n'est pas pris
en compte par cette fonction
Est-ce que jusque la j'ai raison ???
ne dois-je pas lire une premiere fois le tableau avant le tri pour remonter
la valeur la + grande sur la racine de l'arbre ???

J'ai pas envie de donner la solution, ca sent trop fort l'exercice (la
solution normale est d'utiliser std::sort). Je ne vais traiter que du
probleme d'algorithmique (il y a des choses a dire sur le C++ mais
j'ai pas le temps).

L'algorithme est base sur un arbre binaire balance dont on peut
retrouver les fils en faisant un calcul. Si les indices commencent a
1, les fils (fg, fd) du pere (p) sont
fg = 2*p
fd = 2*p + 1
(ce que tu utilises ci-dessus). Si on a des indices qui commencent a
zero, les indices sont
p' = p-1
fg' = fg - 1
fd' = fd - 1

Avec ca tu devrais etre capable de te debrouiller si tu as compris
l'algorithme.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Back to top
Grand's
Guest





PostPosted: Mon Nov 15, 2004 2:18 pm    Post subject: Re: tri par tas - HELP Reply with quote

merci
effectivement c'est bien un exercice demandé par mon prof
tout en sachant que le sujet, tiré d'un bouquin, est fourni avec la
solution
En plus j'ai oublié de lire une phrase ou l'auteur disait que ce tri ne
prenait pas en compte l'indice 0 du tableau.
ce qui explique ma question...desolé
Je voulais juste etre sur de ne pas avoir raté quelque chose

merci

Jean-Marc Bourguet a écrit :
Quote:
Grand's <ici (AT) oula (DOT) bas> writes:

il y avait un bel algo fourni avec et jusque la pas de probleme
Sauf qu'un tableau demarre a l'indice 0, et que cette indice n'est pas pris
en compte par cette fonction
Est-ce que jusque la j'ai raison ???
ne dois-je pas lire une premiere fois le tableau avant le tri pour remonter
la valeur la + grande sur la racine de l'arbre ???

J'ai pas envie de donner la solution, ca sent trop fort l'exercice (la
solution normale est d'utiliser std::sort). Je ne vais traiter que du
probleme d'algorithmique (il y a des choses a dire sur le C++ mais
j'ai pas le temps).

L'algorithme est base sur un arbre binaire balance dont on peut
retrouver les fils en faisant un calcul. Si les indices commencent a
1, les fils (fg, fd) du pere (p) sont
fg = 2*p
fd = 2*p + 1
(ce que tu utilises ci-dessus). Si on a des indices qui commencent a
zero, les indices sont
p' = p-1
fg' = fg - 1
fd' = fd - 1

Avec ca tu devrais etre capable de te debrouiller si tu as compris
l'algorithme.

A+

--
Ceci est une signature automatique de MesNews.
Site : http://arnaud.mesnews.free.fr/


Back to top
drkm
Guest





PostPosted: Tue Nov 16, 2004 12:11 am    Post subject: Re: tri par tas - HELP Reply with quote

Jean-Marc Bourguet <jm (AT) bourguet (DOT) org> writes:

Quote:
(a part le ?? a la fin d'un
commentaire cher a Sutter)

Cher à Sutter ? Pour quelles raisons ce machin peut-il être cher à
quelqu'un ?

--drkm

Back to top
Fabien LE LEZ
Guest





PostPosted: Tue Nov 16, 2004 6:25 am    Post subject: Re: tri par tas - HELP Reply with quote

On Tue, 16 Nov 2004 01:11:02 +0100, drkm <usenet.fclcxx (AT) fgeorges (DOT) org>:

Quote:
Pour quelles raisons ce machin peut-il être cher à
quelqu'un ?

En tant qu'exemple de "trigraphe malgré lui".
Cf GoTW.


--
;-)

Back to top
kanze@gabi-soft.fr
Guest





PostPosted: Tue Nov 16, 2004 7:43 am    Post subject: Re: tri par tas - HELP Reply with quote

Jean-Marc Bourguet <jm (AT) bourguet (DOT) org> wrote

Quote:
Grand's <ici (AT) oula (DOT) bas> writes:

il y avait un bel algo fourni avec et jusque la pas de probleme Sauf
qu'un tableau demarre a l'indice 0, et que cette indice n'est pas
pris en compte par cette fonction
Est-ce que jusque la j'ai raison ???
ne dois-je pas lire une premiere fois le tableau avant le tri pour
remonter la valeur la + grande sur la racine de l'arbre ???

J'ai pas envie de donner la solution, ca sent trop fort l'exercice (la
solution normale est d'utiliser std::sort). Je ne vais traiter que du
probleme d'algorithmique (il y a des choses a dire sur le C++ mais
j'ai pas le temps).

Et cependant...

Quote:
L'algorithme est base sur un arbre binaire balance dont on peut
retrouver les fils en faisant un calcul. Si les indices commencent a
1, les fils (fg, fd) du pere (p) sont
fg = 2*p
fd = 2*p + 1
(ce que tu utilises ci-dessus). Si on a des indices qui commencent a
zero, les indices sont
p' = p-1
fg' = fg - 1
fd' = fd - 1

C'est que justement, en C++, les indices commence par 0, non 1. Aussi,
il y avait un <=b, à la place d'un supérieur était inclusive, et non exclusive, comme c'est la règle
habituelle et idiomatique.

--
James Kanze GABI Software http://www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34

Back to top
Grand's
Guest





PostPosted: Tue Nov 16, 2004 8:01 am    Post subject: Re: tri par tas - HELP Reply with quote

merci beaucoup


[email]kanze (AT) gabi-soft (DOT) fr[/email] a formulé la demande :
Quote:
Jean-Marc Bourguet <jm (AT) bourguet (DOT) org> wrote in message
news:<pxblld3uug5.fsf (AT) news (DOT) bourguet.org>...
Grand's <ici (AT) oula (DOT) bas> writes:

il y avait un bel algo fourni avec et jusque la pas de probleme Sauf
qu'un tableau demarre a l'indice 0, et que cette indice n'est pas
pris en compte par cette fonction
Est-ce que jusque la j'ai raison ???
ne dois-je pas lire une premiere fois le tableau avant le tri pour
remonter la valeur la + grande sur la racine de l'arbre ???

J'ai pas envie de donner la solution, ca sent trop fort l'exercice (la
solution normale est d'utiliser std::sort). Je ne vais traiter que du
probleme d'algorithmique (il y a des choses a dire sur le C++ mais
j'ai pas le temps).

Et cependant...

L'algorithme est base sur un arbre binaire balance dont on peut
retrouver les fils en faisant un calcul. Si les indices commencent a
1, les fils (fg, fd) du pere (p) sont
fg = 2*p
fd = 2*p + 1
(ce que tu utilises ci-dessus). Si on a des indices qui commencent a
zero, les indices sont
p' = p-1
fg' = fg - 1
fd' = fd - 1

C'est que justement, en C++, les indices commence par 0, non 1. Aussi,
il y avait un <=b, à la place d'un supérieur était inclusive, et non exclusive, comme c'est la règle
habituelle et idiomatique.

--
Ceci est une signature automatique de MesNews.
Site : http://arnaud.mesnews.free.fr/


Back to top
drkm
Guest





PostPosted: Tue Nov 16, 2004 9:49 pm    Post subject: Re: tri par tas - HELP Reply with quote

Fabien LE LEZ <gramster (AT) gramster (DOT) com> writes:

Quote:
On Tue, 16 Nov 2004 01:11:02 +0100, drkm <usenet.fclcxx (AT) fgeorges (DOT) org>:

Pour quelles raisons ce machin peut-il être cher à
quelqu'un ?

En tant qu'exemple de "trigraphe malgré lui".
Cf GoTW.

Ok. Par « cher à », j'avais compris qu'il l'avait défendu, qu'il y
trouvait un intérêt.

--drkm

Back to top
kanze@gabi-soft.fr
Guest





PostPosted: Wed Nov 17, 2004 2:30 pm    Post subject: Re: tri par tas - HELP Reply with quote

drkm <usenet.fclcxx (AT) fgeorges (DOT) org> wrote

Quote:
Fabien LE LEZ <gramster (AT) gramster (DOT) com> writes:

On Tue, 16 Nov 2004 01:11:02 +0100, drkm <usenet.fclcxx (AT) fgeorges (DOT) org>:

Pour quelles raisons ce machin peut-il être cher à quelqu'un ?

En tant qu'exemple de "trigraphe malgré lui".
Cf GoTW.

Ok. Par « cher à », j'avais compris qu'il l'avait défendu, qu'il y
trouvait un intérêt.

Ça dépend du sens que tu donnes à « intérêt ». Il l'a trouvé
intéressant, en tout cas, ce qui montre un certain intérêt. Un intérêt
qui s'apparente à la curiosité morbide.

--
James Kanze GABI Software http://www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34

Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.