Recherche trichotomique en C

Fermé
lady Bird - 29 oct. 2009 à 08:21
 pacorabanix - 30 oct. 2009 à 00:23
Bonjour,

Je suis novice en langage C et je dois écrire une programme qui consiste a rechercher un élément par trichotomie.
Normalement c'est le même principe que la recherche par dichotomie, mais je n'arrive pas à m'en sortir quand même...
Quelqu'un pourrait il m'aider s'il vous plaît?
Le programme doit fonctionner sous Linux.
Merci de votre aide.

1 réponse

J'ai oublié mon nick
29 oct. 2009 à 08:27
salut
la trichotomie a été explorée par les soviets dans le temps... sous le prétexte que c'est la base e qui est optimale pour tous les calculs et que c'est la base 3 qui s'en rapproche le plus. mais j'ai l'impression que l'ânerie a la vie dure :-(
0
oué... :s
c'est le genre d'exercice qui amuse mes profs de programmation apparemment.
Je ne men sort toujours pas, est ce que quelqu'un aurait une idée de comment résoudre çà???
Je dois le rendre lundi :(
0
pacorabanix > lady Bird
29 oct. 2009 à 20:00
hum... As-tu compris la recherche dichotomique ?

on regarde en fait à chaque fois en supposant que ta liste est dans l'ordre, si l'élément qu'on cherche est dans la première moitié ou la deuxième moitié. Pour ça on regarde l'élément qui sépare en deux (c-à-d l'élément du milieu, ou presque car des fois il n'y a pas exactement de milieu, peu importe si tu prend un peu après le milieu ou avant).

On regarde donc cet élément, s'il est avant ce qu'on cherche et bien il faut contineur à chercher (récursivement) dans la deuxième moitié, sinon dans la première.

Ici c'est pareil, sauf qu'à chaque "étape", il faut décider si on va chercher dans le premier tiers, le deuxième tiers ou le troisième.

Il faut donc prendre les deux éléments qui séparent ta liste à peu près en 3. (c-à-d, à peu près, taille du tableau/3 et deux fois taille du tableau / 3. La comparaison est un peu plus ch**** car tu dois décider : est-ce que l'élément que je cherche est :
1) avant la première borne
2)entre la première et la deuxième borne
3) après la troisième


c'est juste cette décision qui change, le reste est la même chose...
0