, organisation d'une liste [scheme] - Programmation
Marsh Posté le 11-04-2001 à 10:51:48
Qu'est ce qui marche pas ?
De toute façon à la base ta démarche n'est pas bonne si tu supposes que la liste (des éléments à insérer dans l'arbre) est triée car c'est rarement le cas surtout lors d'une mise à jour de l'arbre (tu n'as pas au départ tous les éléments à insérer donc tu ne peux pas trier de liste.)
La dernière fois je t'ai donné la base de l'algorithme à utiliser pour construire ton arbre.
Marsh Posté le 11-04-2001 à 10:56:43
vi je sais.
mais bon je me reexplique.
je dois construire un arbre a partir d'une liste, celle ci etant deja definie.
donc pour optimiser la recherche, l'ABO c'est le top.
donc si j'organise ma liste comme ca, j'aurais 1 ABO equilibre, donc le top du top.
d'ou ma fonction pour trier la liste.
Marsh Posté le 11-04-2001 à 11:21:04
swich a écrit a écrit : vi je sais. mais bon je me reexplique. je dois construire un arbre a partir d'une liste, celle ci etant deja definie. donc pour optimiser la recherche, l'ABO c'est le top. donc si j'organise ma liste comme ca, j'aurais 1 ABO equilibre, donc le top du top. d'ou ma fonction pour trier la liste. |
Ne t'en fais pas je sais ce qu'est un ABOE, bon tu veux transformer ta liste avant de l'insérer soit, mais quel est ton algo pour insérer les éléments dans l'arbre à partir de ta liste "optimisée" ?
Marsh Posté le 11-04-2001 à 11:59:59
t'inquiete pas pour ca c deja fait.
en fait on utilise 2fonctions
inserer : objet,ABO->ABO
si o < racine -> creer-arbre (racine (inserer o gauche ABo) droit (abo))
si o > racine -> creer-arbre (racine gauche (inserer o droit ABo) droit (abo))
...
un truc ds ce genre la quoi; je l'ai plus en tete exactement, mais bon c un truc vu en cours donc logiquement ca doit etre bon.
il me manque l'optimisation de la liste...
Marsh Posté le 11-04-2001 à 10:23:16
ca y'est, pour ceux qui se souviennent, j'ai capter les ABO.
donc maintenant, pour construire un arbre binaire ordonne equilibre, je doit trier la liste comme cela :
par exemple ;
(1 2 3 4 5 6 7 8 9 10)
-> 5 (1 2 3 4) (6 7 8 9 10)
-> 5 2 (1 3) (4) 8 (6 7) (9 10)
-> 5 2 1 3 4 6 7 9 10
donc on prend le milieu de la liste . (milieu (gauche delaliste) ) (milieu (droit de laliste))
gauchedelaliste : ce qu'il y'a avant le milieu (exclu)
droitedelaliste : ce qu'il y'a apres.
mais ca marche pas......
qq'un a une idee ???