Terminaison
Nous allons étudier l'algorithme en démontrant par cas qu'il répond toujours la bonne réponse.
Si le tableau est non vide, nous avons déjà montré l'initialisation et la conservation.
Cas A : le tableau est vide
Lignes 4-5 : On a i = 0 et longueur = 0
Ligne 6 : on ne rentre pas dans la boucle puisque le tableau est vide : 0 n'est pas inférieur à 0.
On atteint la ligne 8 et puisque 0 n'est pas inférieur à 0, on atteint la ligne 10 puis 11 : on répond bien -1 pour signaler qu'on ne trouve pas x.
Correct sur ce cas.
CAS B : on atteint la fin du tableau de taille n.
On considère n valeurs dont les indices vont de 0 à (n-1).
Lignes 4-5 : On a i = 0 et longueur = n
Démontrons la terminaison de la boucle dans ce cas :
On rentre dans la boucle et le dernier tour est le tour (n-1).
Donc Pn-1 est vérifiée.
Donc x n'est pas dans t[0 .. n-1] (tout le tableau donc).
A la fin de la dernière boucle, i passera de n-1 à n.
On atteint la ligne 8 et puisque n n'est pas inférieur à n, on atteint la ligne 10 puis 11 : on répond bien -1 pour signaler qu'on ne trouve pas x.
Correct sur ce cas.
CAS C : on atteint une case d'indice i contenant x.
On considère n valeurs dont les indices vont de 0 à (n-1).
Lignes 4-5 : On a i = 0 et longueur = n
Démontrons la terminaison de la boucle dans ce cas :
On rentre dans la boucle et le dernier tour est le tour (i-1).
Donc Pi-1 est vérifiée.
Donc x n'est pas dans t[0 .. i-1].
A la fin de la dernière boucle, i passera de i-1 à i avec t[i] = x.
On atteint la ligne 8 et puisque i est inférieur à n, on place cet indice dans la réponse.
Correct sur ce cas.
Nous avons traité les 3 cas possibles.
L'algorithme est correct sur ces 3 cas.
◻