IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Python Discussion :

la recherche dichotomique


Sujet :

Contribuez Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 93
    Par défaut la recherche dichotomique
    voici une fonction qui effectue une recherche dichotomique sur une liste d element exemple la liste ['a','b','c','d','e','f','g'] etc nb il faut que la liste soit trie le recherche dichotomique n est efficace qu cette condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
     
     
    def dicho(chaine,recherche):
        """recherche un element dans une liste d element"""
        i=len(chaine)
        flag=False
        while(i!=1):
            i/=2
            if recherche>chaine[i]:
                if recherche==chaine[i]:
                    flag= True
     
                else:
                    chaine=chaine[i:]
                    i=len(chaine)
                    ##print chaine
            else:
                if recherche==chaine[i]:
                    flag=True
                else:
                    chaine=chaine[:i]
                    i=len(chaine)
                    ##print chaine
        return flag
    ##deux  exemples dicho(list("chaine"),"a");dicho([1,2,3,4,5,6],9)

  2. #2
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if recherche>chaine[i]:
                if recherche==chaine[i]:
    y aurait pas un problème là ?

    comment peut-on être égal à quelque chose si l'on est strictement plus grand ?


    ensuite, pourquoi attendre que i soit égale à 1 ?
    y a moyen de sortir plus vite de la boucle... sans forcemment alourdir le test de terminaison
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 93
    Par défaut c est pas un modele
    tu sais l on peu resoudre un probleme en etantr ilogique pour ma par j ai tester cette fonctrion et je t assure que ca marche pour peu que l on y donne les bonne valeur a

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 93
    Par défaut mais quand meme
    je corrige le code effectivement il y avait une erreur le test n etait jamais verifie et voila maintenant le nouveau code quand au test de la boucle while on peu s assurrer d avoir une lettre dans une liste que si l on parcourue toutla liste sauf si on troiuve la lettre avant c est pour ca que j ai rajouter un break si le test de comparaison est positif voila merci a toi guigui pour ton aide precieuse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    def dicho(chaine,recherche):
        """recherche un element dans une liste d element"""
        i=len(chaine)
        flag=False
        while(i!=1):
            i/=2
            if recherche>chaine[i]:
     
                chaine=chaine[i:]
                i=len(chaine)
            elif recherche==chaine[i]:
                flag= True##print chaine
                break
            else:
     
                chaine=chaine[:i]
                i=len(chaine)
                    ##print chaine
        return flag
    aa+

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Par défaut
    Citation Envoyé par goomie Voir le message
    tu sais l on peu resoudre un probleme en etantr ilogique pour ma par j ai tester cette fonctrion et je t assure que ca marche pour peu que l on y donne les bonne valeur a
    C'est clair que si tu donnes des valeurs pour que ton algorithme fonctionne, alors il fonctionne bien -_- C'est un peu idéaliste quand même. D'ailleurs visiblement tu as pu observer que tu l'avais mal testée.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 16
    Par défaut
    On peut aussi utiliser le module bisect comme indique ci après http://code.activestate.com/recipes/54159/

Discussions similaires

  1. probleme : recherche dichotomique
    Par M.a.n.u. dans le forum C
    Réponses: 3
    Dernier message: 17/06/2006, 23h30
  2. recherche dichotomique sur chaînes de carctères
    Par contexte dans le forum Langage
    Réponses: 4
    Dernier message: 13/04/2006, 00h31
  3. Réponses: 23
    Dernier message: 10/01/2006, 13h33
  4. Recherche dichotomique
    Par remixtech dans le forum C
    Réponses: 4
    Dernier message: 06/01/2006, 18h39
  5. Recherche dichotomique
    Par Gryzzly dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 31/12/2005, 11h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo