Considérons un tableau T et une valeur needle que l'on souhaite trouver dans le tableau.
L'approche envisagée consiste à parcourir le tableau, dans l'ordre, jusqu'à trouver needle. Quand needle est trouvé, on renvoie l'indice de la première occurrence de needle dans T.
Cette description cache une précondition implicite. Énoncez cette précondition.
Pour éviter cette précondition, on améliore notre notre description :
needle est dans T, notre fonction renvoie l'indice de la première occurrence,needle n'est pas dans T, que la fonction renvoie -1 et pas False ou None ?recherche_sequentielle(T, needle) -> int.T = [1, 5, 84, 13, 96, 15, 2, 41, 43, 31, 58, 13, 75, 89] assert recherche_sequentielle(T, 13) == 3 assert recherche_sequentielle(T, 58) == 10 assert recherche_sequentielle(T, 25) == -1
On se préoccupe du temps approximatif mis par la recherche. Pour évaluer ce temps, on peut considérer que chaque ligne de la fonction s'exécute dans un temps identique attention, ce n'est pas vrai, mais cela suffit ici.
On s'intéresse au cas défavorable, quand on n'a pas de chance, c'est à dire ici quand needle n'est pas dans T et que l'on doit parcourir la totalité du tableau.
On s'intéresse surtout au cas où $n$ est très grand. On peut alors faire des approximations. Par exemple, si $n$ grand, alors $3n+2 \approx 3n$ et $5n^2 + 6n - 1 \approx 5n^2$.
Tenant compte de cette approximations, pour un tableau de $n$ éléments, $n$ grand, quel est le coût de la fonction au pire ?
On ne s'intéresse pas vraiment au coût, mais à l'évolution du coût. C'est à dire : si le tableau devient 2 fois plus grand, comment évolue le coût de la fonction ?
Répondez à cette question.