Favicon
NSI Première

Recherche dichotomique - Correction

Correction de la fiche

La fiche corrigée est ici.

Codage Python

Recherche séquentielle

Pour avoir l'indice de la valeur recherchée, le plus logique est donc de faire un parcours par indice du tableau :


def recherche_sequentielle(tab: list, valeur: int)->(bool, int):
    for i in range(len(tab)):
        if tab[i] == valeur:
            return True, i
    
    return False, -1				# "-1" est l'entier signifiant "pas trouvé"
    		

Recherche dichotomique


def recherche_dicho(tab: list, valeur: int)->(bool, int):

    g = 0                           # g = indice du premier élément du tableau
    d = len(tab)-1                  # d = indice du dernier élément

    while g<=d :                    # tant que la "zone de recherche" dans le tableau n'est pas réduite à un seul ou deux élément(s)
        m = (g+d)//2                # calcul de l'indice de l'élément "au milieu"

        if tab[m] == valeur:        # si l'élément à cet indice est égal à la valeur recherchée,
            return True, m          # alors on renvoie True et cet indice.
        else:                       # Sinon,
            if valeur < tab[m]:     # si la valeur recherchée est PLUS PETITE que l'élément à l'indice m,
                d = m - 1           # alors on poursuit la recherche dans la partie GAUCHE
            else:                   # sinon ( donc si la valeur recherchée est PLUS GRANDE ),
                g = m + 1           # alors on poursuit la recherche dans la partie DROITE

    return False, -1                # si la "zone de recherche" a été réduite à un seul élément, c'est que la valeur n'est pas présente dans le tableau