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/
-- 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
Fabien LE LEZ <gramster@gramster.com> writes:
On Mon, 15 Nov 2004 10:24:09 +0100, Grand's <ici@oula.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
-- 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
Fabien LE LEZ
On 15 Nov 2004 10:37:32 +0100, Jean-Marc Bourguet :
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 ?
-- ;-)
On 15 Nov 2004 10:37:32 +0100, Jean-Marc Bourguet <jm@bourguet.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 ?
On 15 Nov 2004 10:37:32 +0100, Jean-Marc Bourguet :
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 ?
-- ;-)
Jean-Marc Bourguet
Fabien LE LEZ writes:
On 15 Nov 2004 10:37:32 +0100, Jean-Marc Bourguet :
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
Fabien LE LEZ <gramster@gramster.com> writes:
On 15 Nov 2004 10:37:32 +0100, Jean-Marc Bourguet <jm@bourguet.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
On 15 Nov 2004 10:37:32 +0100, Jean-Marc Bourguet :
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
Jean-Marc Bourguet
Grand's 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+
-- 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
Grand's <ici@oula.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+
--
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
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
Grand's
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
Grand's 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/
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
Grand's <ici@oula.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/
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
Grand's 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/
drkm
Jean-Marc Bourguet writes:
(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
Jean-Marc Bourguet <jm@bourguet.org> writes:
(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 ?
Pour quelles raisons ce machin peut-il être cher à quelqu'un ?
En tant qu'exemple de "trigraphe malgré lui". Cf GoTW.
-- ;-)
kanze
Jean-Marc Bourguet wrote in message news:...
Grand's 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 <b, ce qui fait penser que l'indice 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
Jean-Marc Bourguet <jm@bourguet.org> wrote in message
news:<pxblld3uug5.fsf@news.bourguet.org>...
Grand's <ici@oula.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 <b, ce qui fait penser que l'indice
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
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 <b, ce qui fait penser que l'indice 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
Grand's
merci beaucoup
a formulé la demande :
Jean-Marc Bourguet wrote in message news:...
Grand's 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 <b, ce qui fait penser que l'indice 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/
merci beaucoup
kanze@gabi-soft.fr a formulé la demande :
Jean-Marc Bourguet <jm@bourguet.org> wrote in message
news:<pxblld3uug5.fsf@news.bourguet.org>...
Grand's <ici@oula.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 <b, ce qui fait penser que l'indice
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/
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 <b, ce qui fait penser que l'indice 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/