📝
Fiche de révision
📝 Fiche de révision — Algorithmes sur les tableaux : parcours et tris
🔍 Parcours séquentiel
def recherche(t, v):
for i in range(len(t)):
if t[i] == v:
return i
return -1- Maximum :
m = t[0]puisfor i in range(1, len(t)): if t[i] > m: m = t[i]; moyenne : somme /len(t). - Valeurs de type quelconque ; arrêt à la première occurrence.
- Coût linéaire : comparaisons au pire (absent ou dernier) ; temps .
🔽 Tri par sélection
for i in range(n - 1):
i_min = i
for j in range(i + 1, n):
if t[j] < t[i_min]:
i_min = j
t[i], t[i_min] = t[i_min], t[i]- Invariant : au début de l'étape ,
t[0..i-1]trié et toutt[i..n-1]. - Initialisation (vide) → conservation (le minimum placé en
t[i]) → conclusion (trié). - Coût : comparaisons toujours ; au plus échanges.
- Terminaison : boucles
forbornées.
➡️ Tri par insertion
for i in range(1, n):
x = t[i]
j = i - 1
while j >= 0 and t[j] > x:
t[j + 1] = t[j]
j = j - 1
t[j + 1] = x- Invariant : au début de l'étape ,
t[0..i-1]trié (mêmes éléments). - Terminaison du
while: variantjdécroît de 1, s'arrête à . - Coût : déjà trié comparaisons ; inversé comparaisons et décalages ; quadratique au pire.
j >= 0 and t[j] > x: évaluation séquentielle protèget[-1].
📈 Coûts
| algorithme | pire cas | nature |
|---|---|---|
| recherche, max, moyenne | linéaire | |
| sélection | (toujours) | quadratique |
| insertion | ; si trié | quadratique |
- : ; : : impraticable → tris en (terminale,
sorted).
🧾 Rédiger une preuve
- Invariant énoncé précisément (indices).
- Initialisation : vrai avant le premier tour.
- Conservation : vrai avant → vrai après un tour.
- Conclusion : à la sortie, la propriété donne le résultat.
- Terminaison :
forborné ;while: variant entier strictement décroissant minoré.
⚠️ Pièges à éviter
| Piège | Correction |
|---|---|
| Maximum initialisé à 0 | t[0] |
Oublier return -1 | valeur absente |
| Sélection : échanger à chaque comparaison | un seul échange par étape |
Insertion : t[j] > x and j >= 0 | j >= 0 d'abord |
| Coût de la sélection « dépend du tableau » | non : toujours |
📌 À retenir
- Parcours : linéaire.
- Sélection : minimum + échange, .
- Insertion : décalages, à .
- Invariant = preuve de correction.
- Variant = preuve de terminaison.
Révise ce chapitre avec KlarIA
Tuteur qui t'explique pas à pas, quiz pour t'entraîner, flashcards pour mémoriser. Gratuit.
Créer mon compte gratuitement→