Trier une liste
Exercice supplémentaire · niveau 3 (difficile) · sciences numériques et technologie (seconde), chapitre 6 — Listes et simulations aléatoires · Manipuler une liste
Énoncé
Comparer sorted(L) et L.sort() : que renvoient-ils, et que font-ils à L ? Puis écrire un tri par sélection, et compter ses comparaisons.
Corrigé
L = [5, 2, 9, 1]
print(sorted(L)) # [1, 2, 5, 9] — une NOUVELLE liste
print(L) # [5, 2, 9, 1] — inchangée
print(L.sort()) # None !
print(L) # [1, 2, 5, 9] — modifiée sur place
L.sort() renvoie None : écrire L = L.sort() détruit la liste. C'est une erreur très fréquente, cousine de L = L.append(x).
Tri par sélection :
def tri_selection(L):
L = L.copy()
for i in range(len(L)):
indice_min = i
for j in range(i + 1, len(L)):
if L[j] < L[indice_min]:
indice_min = j
L[i], L[indice_min] = L[indice_min], L[i]
return L
Il effectue comparaisons, soit environ : pour éléments, mais pour . Le tri de Python, lui, en demande de l'ordre de — d'où l'écart considérable sur de grandes listes.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.